2013-12-22 50 views
0

我必須在html頁面中找到所有「類似登錄表單」的表單。這樣做的要求是它包含文本輸入字段,密碼字段和按鈕(提交或只是一個按鈕)。html頁面中所有特定表單的xpath模式

不應該提及任何元素名稱,因爲它應該通過不同的語言突變來工作。

而且我需要在頁面中找到符合這些要求的所有表單。我想這可以使用XPath來完成,但我無法弄清楚任何工作模式。

順便說一下,我使用python的webdriver。

+0

什麼,你必須嘗試迄今模式?他們爲什麼不工作?你能否將你的嘗試和可能的錯誤信息包含在你的問題中?此外,我們需要一個精簡!輸入HTML頁面來處理。否則,它只是猜測。 –

回答

2

所以你需要一個XPath表達式,以每form元素(//form)有其後代中的type=password[.//input[@type='password']])的input元素,標準input場([.//input[not(@type) or @type='' or @type='text']])和一個提交按鈕([.//input[@type='submit'] or .//button[not(@type) or @type='' or @type='submit']])相匹配。

所有一起成爲

//form[.//input[@type='password']][.//input[not(@type) or @type='' or @type='text']][.//input[@type='submit'] or .//button[not(@type) or @type='' or @type='submit']] 

這可能不是任何形式的匹配,因爲提交按鈕和文本輸入框是很難做出一個一直在努力的規則。處理這些元素時的問題是,它們具有許多值,如果提供了無效的類型,則它們默認爲textsubmit狀態。例如,我的輸入元素type屬性設置爲nonvalidtype,它仍然是標準文本輸入。

此外,type屬性是不區分大小寫,並且認爲這是比較複雜的正確XPath表達式,它也需要的XPath 2.0:

//form[.//input[lower-case(@type)='password']][.//input[not(@type) or @type='' or lower-case(@type)='text']][.//input[lower-case(@type)='submit'] or .//button[not(@type) or @type='' or lower-case(@type)='submit']] 
+0

謝謝,這可能是我正在尋找的。我認爲,可能沒有辦法將涵蓋我需要的100%案例。 – dakov

相關問題