1. 程式人生 > 其它 >Selenium之用xpath定位元素

Selenium之用xpath定位元素

selenium中有8種方式可以定位元素,分別為:ID、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT、NAME、TAG_NAME、CLASS_NAME、CSS_SELECTOR,本文記錄XPATH的使用方法。

根據路徑選擇

絕對路徑

從根路徑即html開始一層一層的往下找,即絕對路徑。例如百度首頁的按鈕:

/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input

相對路徑

即相對於其他路徑而寫的xpath。例如id為form的元素下的所有span子元素:

//*[@id="form"]/span

 

根據屬性選擇

常用屬性有class、name、text

等。舉例說明:

表示式 說明

//span[@class='tools'] 

class等於tools的span元素。(注意:是等於!)
//div[contains(@class,"submit")] class包含submit的div元素。(注意:是包含!)
//a[contains(text(),'取消')] 文字內容包含"取消"的a元素
//input[@name='mobile'] name等於mobile的input元素
//input[@name="item"][not(@disabled)]/.. name等於item且沒有disabled屬性的input元素的父元素
 //*[@type='hidden']
type屬性等於hidden所有元素。(注意萬用字元*)
 //input[@formcontrolname="username"] formcontrolname屬性等於username的input
 ......

......

*只要是有的屬性都可以,不一定是要自己見過的;

*可以寫多個屬性,表示都需要滿足;

*用xpath可以實現所有情況的定位啊,超好用;

根據第幾個來選擇

根據找到的元素本身取,用(xpath)[1]

比如部落格園的登入頁面,根據xpath  //div[@class="mat-tab-label-content"]可以定位到兩個元素,“密碼登入”和“簡訊登入”;若只想取第一個,即密碼登入,則用 (

//div[@class="mat-tab-label-content"])[1];若只想取第二個,即簡訊的登入,則用(//div[@class="mat-tab-label-content"])[2]

背景顏色:#FFEFD5

組選擇、父節點、兄弟節點

組選擇

加上符號   |   即可。例如要選擇所有的p元素和h4元素:

//p | //h4

父節點

某個元素的父節點用 /..   來選擇。例如要選擇百度首頁id為su的元素的父節點:

//*[@id='su']/..

上上級父節點可以加多個/..,例如://*[@id='su']/../..

兄弟節點

選擇後續的兄弟節點,可以使用:following-sibling:: 

1、後續所有兄弟節點:

//*[@name='ie']/following-sibling::*

2、後續的所有兄弟節點中的span元素:

//*[@name='ie']/following-sibling::span

3、後續的所有兄弟節點中的span元素且span元素的class包含bg:

//*[@name='ie']/following-sibling::span[contains(@class,'bg')]

選擇前面的兄弟節點,可以使用:preceding-sibling:: 

例如://input[@name='f']/preceding-sibling::*

 

End.