天天看點

selenium UI自動化測試之xpath元素定位方法詳解

前言1

​​菜鳥教程​​中對于 xpath 的介紹是一門在 XML 文檔中查找資訊的語言。

表達式 介紹 備注
/ 根節點 絕對路徑
// 目前節點的所有子節點 相對路徑
* 所有節點元素的
@ 屬性名的字首 @class   @id
*[1] [] 下标運算符
[] [ ]謂詞表達式 //input[@id='kw']
Following-sibling 目前節點之後的同級
preceding-sibling 目前節點之前的同級
parent 目前節點的父級節點

前言2

絕對定位:以/單斜杠開頭,從根節點,嚴格按照順序和位置來表達,父/子,不建議使用。

相對定位:已//雙斜杠開頭,不管元素的位置和順序,在html頁面當中,有沒有比對表達式的元素。

①//标簽名[@屬性名稱=屬性值]

ele=driver.find_element_by_xpath(//input[@id='kw'])      

舉例:如下,在element使用ctrl+f查找,輸入xpath定位。則可以找到對應的元素。

selenium UI自動化測試之xpath元素定位方法詳解

②邏輯運算 and or

//标簽名[@屬性名稱-屬性值 and @屬性名稱=屬性值]

//标簽名[@屬性名稱-屬性值 or @屬性名稱=屬性值]

ele=driver.find_element_by_xpath(//input[@id='kw' and name='wd'      

③層級定位,元素本身的屬性不能唯一定位找到自己,借助其他比較相近的祖先節點來縮小查找範圍。

如果唯一定位無法找到,有多個值時,就采用層級定位。先找到某一個祖先的節點,再在祖先的子孫後代當中查找元素。

driver.find_element_by_xpath('//span[text()="小美"]/parent::div/following-sibling::div[@class="attend_date_state "]//img')      

一、xpath基本定位用法

1、使用id定位 --  driver.find_element_by_xpath('//input[@id="kw"]')

selenium UI自動化測試之xpath元素定位方法詳解

2、使用class定位 --  driver.find_element_by_xpath('//input[@class="s_ipt"]')

selenium UI自動化測試之xpath元素定位方法詳解

二、xpath相對路徑/絕對路徑定位

1、相對定位 -- 以// 開頭 如: //form//input[@name="phone"]

selenium UI自動化測試之xpath元素定位方法詳解

2、 絕對定位 -- 以/ 開頭,但是要從根目錄開始,比較繁瑣,一般不建議使用絕對定位,如: /html/body/div/a

selenium UI自動化測試之xpath元素定位方法詳解

三、xpath文本、模糊、邏輯定位

1、【文本定位】使用text()元素的text内容 如: //button[text()="登入"]

selenium UI自動化測試之xpath元素定位方法詳解

2.、【模糊定位】使用contains()包含函數 如://button[contains(text(),"登入")] 、//button[contains(@class,"btn")]

selenium UI自動化測試之xpath元素定位方法詳解

3.、【模糊定位】使用 starts-with -- 比對以xx開頭的屬性值; ends-with-- 比對以xx結尾的屬性值;

//button[starts-with(@class,"btn")] 、 //input[ends-with(@class,"-special")]

4.、使用邏輯運算符 --  and 、 or

//button[@class='ant-table-scroll' and @title='content'] 、 //button[@class='ant-table-scroll' or @id='pwd']

四、xpath軸定位

1、軸運算①

①ancestor:祖先節點,包括父節點(通過某一具有唯一定位的元素擷取其所有的祖先節點,根據索引下标取父節點、爺爺節點、、、祖先節點(以此類推:索引下标值越大,越遠離該元素;索引下标值越小,越靠近該元素))

②parent:父節點(取最近的一個節點)

③prceding-sibling:目前元素節點标簽之前的所有兄弟節點(平級)

④prceding:目前元素節點标簽之前的所有節點

⑤following-sibling:目前元素節點标簽之後的所有兄弟節點(平級即同屬于同一個父節點的元素的兄弟節點)

⑥following:目前元素節點标簽之後的所有節點      

使用文法:軸名稱 :: 節點名稱

使用較多場景:頁面顯示為一個表格樣式的資料列

selenium UI自動化測試之xpath元素定位方法詳解
selenium UI自動化測試之xpath元素定位方法詳解

注意:

# 定位 找到元素 -- 做到唯一識别

# 優先使用id

# 舍棄:有下标的出現、有絕對定位的出現、id動态變化時舍棄      

1、軸運算②

① /.. :  定位目前相對定位元素的父級元素

② /../.. :定位目前相對定位元素的爺爺級元素

③ /../../.. :i定位目前相對定位元素的父級的父級的父級元素

。。。。以此類推      

執行個體:

selenium UI自動化測試之xpath元素定位方法詳解
selenium UI自動化測試之xpath元素定位方法詳解
selenium UI自動化測試之xpath元素定位方法詳解

五、執行個體:處理selenium中的xpath定位元素的模糊比對問題

selenium UI自動化測試之xpath元素定位方法詳解

①用 contains

driver.find_element_by_xpath('//div[contains(@style,"sp.gif")]').click()      

②用 start-with

driver.find_element_by_xpath('//div[start-with(@style,"position")]').click()      

③用 text

driver.find_element_by_xpath('//*[text()="退出"]').click()      

④ contains 關鍵字與 text

driver.find_element_by_xpath('//a[contains(text(), "退出")]').click()