用Xpath定位元素的方法總是記不住,經常要翻出各種文檔鏈接參考,干脆把需要用到的內容整到這個筆記中方便查找。
Xpath是在XML文檔中定位節點的語言。使用 XPath 的主要原因之一是當想要查找的元素缺少合適的 id 或name屬性。XPath定位器可以用來絕對或相對定位缺少id或name屬性的元素,也可以是用其他屬性進行定位。
< html > < body > < form id ="loginForm" > < input name ="username" type ="text" /> < input name ="password" type ="password" /> < input name ="continue" type ="submit" value ="Login" /> < input name ="continue" type ="button" value ="Clear" /> </ form > </ body > < html >
?
form元素可以這樣定位:
1.絕對定位(最容易受HTML語句改變的影響)
2.HTML中第一個form元素
3.包含屬性為id,值為“loginForm"的form元素
login_form = driver.find_element_by_xpath("/html/body/form[1]") login_form = driver.find_element_by_xpath("http://form[1]") login_form = driver.find_element_by_xpath("http://form[@id='loginForm']")
?
username元素可以這樣定位:
1.form元素的input子元素中包含屬性為name,值為”username“的元素
2.包含屬性為id,值為“loginForm"的form元素的第一個input子元素
3.包含屬性為name,值為”username“的第一個input元素
username = driver.find_element_by_xpath("http://form[input/@name='username']") username = driver.find_element_by_xpath("http://form[@id='loginForm']/input[1]") username = driver.find_element_by_xpath("http://input[@name='username']")
?
Clear按鈕可以這樣定位:
1.同時包含屬性為name,值為”continue“和屬性為type,值為”button“的input元素
2.包含屬性為id,值為“loginForm"的form元素的第4個input子元素
clear_button = driver.find_element_by_xpath("http://input[@name='continue'][@type='button']") clear_button = driver.find_element_by_xpath("http://form[@id='loginForm']/input[4]")
附Xpath學習鏈接,參見: http://www.w3school.com.cn/xpath/index.asp
有助于發現元素的Xpath的附加組件有:
Xpath Checker ?(交互式的 XPath 表達式編輯器)
Firebug ?(對網頁的CSS、HTML和JavaScript進行實時編輯、調試和監控)
XPath Helper ?(便于提取、編輯和評估網頁的Xpath)
?
英文文檔出處,參見 : https://selenium-python.readthedocs.org/en/latest/locating-elements.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
