Python Selenium Xpath高級定位用法

分享知識  傳遞快樂

 

目前很多網頁前端代碼是框架或 JS 生成的,就導致了混亂而難以定位。爲了快速而又複雜定位 Selenium 中有一個 Xpath 選擇器,可以選擇複雜的頁面定位,也是爬蟲在網頁定位中的較優的選擇。

 

1、通過絕對路徑定位元素

driver.find_element_by_xpath("html/body/div/form/input")

2、通過相對路徑定位元素

driver.find_element_by_xpath("//input")

3、使用索引定位元素

driver.find_element_by_xpath("//input[1]")

4、使用XPATH的屬性值定位元素

driver.find_element_by_xpath("//input[@id='username']")
driver.find_element_by_xpath("//input[@type='submit'][@name='sub1']")
driver.find_element_by_xpath("//input[@type='submit' and @name='sub1']")
driver.find_element_by_xpath("//input[@type='submit' or @name='sub1']")

5、使用XPATH的屬性名稱定位元素

# 查找所有input標籤中含有type屬性的元素
driver.find_element_by_xpath("//input[@type]")

# 查找所有a標籤中含有onclick屬性的元素
driver.find_element_by_xpath("//a[@onclick]")

.....

6、使用任意值來匹配屬性及元素

# 匹配所有input元素中含有屬性的值爲readonly的元素
driver.find_element_by_xpath("//input[@*='readonly']"))

7、使用模糊的屬性值匹配

starts-with():匹配一個屬性開始位置的關鍵字,是模糊定位的一種。

# 匹配id以submit開頭的元素,如:id='submit'
driver.find_element_by_xpath("//input[start-with(@id,'submit')]")

ends-with():匹配一個屬性結束位置的關鍵字,是模糊定位的一種。

# 匹配id以submit結尾的元素,如:id='submit'
driver.find_element_by_xpath("//input[ends-with(@id,'submit')]")

contains():匹配一個屬性值中包含的字符串,也是模糊定位的一種。

# 匹配id中含有submit的元素,如:id='submit'
driver.find_element_by_xpath("//input[contains(@id,'submit')]")

# 匹配name屬性中包含na關鍵字的頁面元素
driver.find_element_by_xpath("//input[contains(@name,'na')]")

text():根據文本信息匹配元素位置。

# 如:<a href="http://www.baidu.com">百度搜索</a>
driver.find_element_by_xpath("//a[text()='百度搜索'] ")
driver.find_element_by_xpath("//a[contains(text(),"百度搜索")]")

last():函數位置定位。

# 表示div元素->form元素->input元素的最後一個子元素,得到id值爲e2的E元素
driver.find_element_by_xpath("/div/form/input[last()]")

8、過慮某個元素

name():獲取標籤名稱。

# 表示過慮掉在 div id='query_reulst_box' 的下的 style 標籤和 meta 標籤
driver.find_element_by_xpath("//div[@id='query_reulst_box']/*[not(name()='style' and name()='meta')]//text())

 

 

如需瞭解更多請參考:XPath 語法XPath 函數

 

 

 

 

 

 

 

—————————
如有不足請留言指正
相互學習,共同進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章