Xpath定位
驗證xpath寫的是否正確:
1、打開瀏覽器檢查頁面,Ctrl+F,把路徑輸入進去,如果可以定位到的位置只有一個,說明是對的
2、在需要定位的頁面,按F12后,切換至console列下,輸入表達式。語法 $x("path_selector")
最常用的歸納幾點:
@ 用在標簽的屬性前,選取屬性 //標簽[@屬性名=屬性值]
.. 選取當前節點的父節點
[x] 指第x個。 比如 //div/input[2] 指div下面第二個input
* 指任意 比如 //span[@*="xxxx"] 指定位span中任意屬性等於xxx的;比如//*[@id="kw"] 指定位任意標簽屬性id='kw'
/ 用在開始表示絕對路徑,從根節點選取; 用在中間表示前一個節點的下一級
// 用在開始表示從當前節點開始;用在中間表示所有子節點,不用考慮是否直接子節點
常用寫法:
屬性定位: //標簽[@屬性名=屬性值]
文本定位: //標簽[text()=精確內容]
contains()函數定位,如果屬性值或文本內容過長,可以選取其中一部分定位, //標簽[contains(@屬性,屬性值)] //標簽[contains(text(),部分內容)]

一、xpath基本定位法
-
使用id定位
driver.find_element_by_xpath('//input[@id=""kw]')
2.使用class定位
driver.find_element_by_xpath('//input[@class="s_ip"]')
3.當然,通過常用8種方式結合xpath均可以定位(name,tag_name,link_text,partial_link_text)
二、xpath相對路徑/絕對路徑定位
1.相對路徑定位
以//開頭,表示從當前節點開始,如: //form//input[@name="phone"]
2.絕對路徑
以/開頭,從根節點開始選取,比較繁瑣,一般不建議使用 如:/html/body/div/a
三、xpath文本、模糊、邏輯定位
1、文本定位
使用text()元素的text內容 如: //button[text()="登錄"]
2. 模糊定位
使用contains()包含函數 如: //button[contains(text(),"登錄")] //button[contains(@class,"btn")]
使用starts-with ends-with 如://button[starts-with(@class,"btn")] //input[ends-with(@class,"-special")]
3.邏輯運算符
and or 如://input[@name="phone" and @datatype="m"]
四, xpath軸定位
軸運算
ancestor:祖先節點 包括父
parent: 父節點
preceding-sibling : 當前元素節點標簽之前的所有兄弟節點(同級)
preceding: 當前元素節點標簽之前的所有節點
following-sbling:當前元素節點標簽之后的所有兄弟節點 (同級) 如: //input/following::[1] input的下一個兄弟元素
following: 當前元素節點標簽之后的所有節點
使用方法: 軸名稱::節點名稱 (前后的定位與之前一致,用/隔開即可)
使用較多的場景:頁面顯示為一個表格樣式數據列

