selenium---Xpath定位方法


  看到標題,肯定知道,這一篇又是定位,因為我們做自動化測試,第一步就是定位元素,如果元素都定位不好,那么怎么實現代碼點點點?

Xpath

XPath , 全稱XML Path Language ,即XML 路徑語言,它是一門在XML 文檔中查找信息的語言。它最初是用來搜尋XML 文檔的,但是它同樣適用於HTML 文檔的搜索。XPath的選擇功能十分強大,它提供了非常簡明的路徑選擇表達式,另外,它還提供了超過100個內建函數,用於字符串、數值、時間的匹配以及節點、序列的處理等,幾乎所有我們想要定位的節點,都可以用XPath來選擇。

Xpath常用屬性

格式:

# XPath定位方法
driver.find_element_by_xpath('//*[@屬性=元素值]')
表達式 描述
nodename 選取此節點的所有子節點
/ 從當前節點選取直接子節點
// 從當前節點選取子孫節點
. 選取當前節點
.. 選取當前節點的父節點
@ 選取屬性
* 通配符,選擇所有元素節點與元素名
@* 選取所有屬性
[@屬性] 選取具有給定屬性的所有元素
[@屬性=‘value’] 選取給定屬性具有給定值的所有元素

 

 

 

 

 

 

 

 

 

 

通用方法定位

這里安靜還是以百度輸入框為例子

1、通過id屬性定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
# 通過id屬性定位 driver.get(
'https://www.baidu.com/')driver.find_element_by_xpath('//*[@id="kw"]').send_keys('測試-安靜博客園')

2、通過name屬性定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過name屬性定位
driver.find_element_by_xpath('//*[@name="wd"]').send_keys('測試-安靜博客園')

3、通過class屬性定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過class屬性定位
driver.find_element_by_xpath('//*[@class="s_ipt"]').send_keys('測試-安靜博客園')

4、通過text屬性定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過text屬性定位
driver.find_element_by_xpath('//*[text()="新聞"]').click()

5、通過contains方法定位

contains屬於 屬性中包含XXX就可以進行匹配

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過contains方法中的text屬性定位# driver.find_element_by_xpath('//*[contains(text(),"地圖")]').click()
# 通過contains方法中的id屬性定位
driver.find_element_by_xpath('//*[contains(@id,"kw")]').send_keys('測試-安靜博客園')

6、通過標簽名進行定位

前面了解到XPath定位前面的*表示標簽,如果多個標簽的話,我們可以直接通過標簽進行匹配

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過標簽名進行匹配
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('測試-安靜博客園')

7、多個屬性進行匹配

前面大多數都是唯一表示的屬性,那么我們可能會遇到不是唯一標識的,那么我們可以通過多個屬性進行定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過多個屬性進行定位
driver.find_element_by_xpath('//*[@id="kw" and @name="wd"]').send_keys('測試-安靜博客園')

8、通過父級或者爺爺級進行定位

在遇到元素無法定位的時候,我們可以用個定位元素的父級或者爺爺級別的進行定位

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 通過上級進行定位
driver.find_element_by_xpath("//form[@id='form']/span[contains(@class,'s_ipt_wr')]/input").send_keys('測試-安靜博客園')

 

 

定位元素這個東西,只有多練,多寫,才能孰能生巧。定位方法很多種,大家可以自己看看哪一種適合自己。

 

 

如果安靜寫的對您有幫助,可以點個關注,不懂得地方或者寫錯的地方可以下方留言,持續更新中~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM