selenium之如何使用xpath定位頁面元素

一.概述
xpath是一種選擇器,是一種xml路徑語言,在自動化測試過程中能夠準確的定位頁面的元素,可以說xpath

能解決99%的元素定位的問題;

二.xpath常用符號說明
/ 表示絕對路徑,絕對路徑是指從根目錄開始

//表示相對路徑

.表示當前層

..表示上一層

*表示通配符

@表示屬性

[]屬性的判斷條件表達式

三.常用的xpath的寫法
/html/div

/html//div 表示選擇根目錄下的所有的子孫后代節(jié)點中的div節(jié)點,//表示相對路徑

//div 表示選擇所有的div節(jié)點

//div/div 表示選擇所有的div節(jié)點的子節(jié)點中含有div的節(jié)點

//div/div/. 表示選擇//div/div節(jié)點的當前層的節(jié)點,與//div/div的結果相同

//div/div/.. 表示選擇//div/div節(jié)點的上一層節(jié)點,也就是選擇一個div節(jié)點,該div節(jié)點的子節(jié)點有div節(jié)點

//div/div/* ,表示選擇//div/div的所有子節(jié)點,//div/div會有兩個匹配出來的節(jié)點

//div[@id='input'] 表示選擇一個id為’input’的div節(jié)點

//div[@id='input']/input 表示選擇一個id為’input’的div節(jié)點的input子節(jié)點

//table//input[@id='user'] 表示選擇table的子孫后代中id為user的input節(jié)點

//input[@name='identity' and @class='Volvo'] 選擇一個name為identity并且class為Volvo的input節(jié)點

//input[@name='identity' or @class='Volvo'] 選擇一個name為identity,或者class為Volvo的節(jié)點

//input[@name='identity' or @class='Volvo'][1] 選擇第一個name為identity,或者class為Volvo的節(jié)點

//input[@name='identity' or @class='Volvo'][last()] 選擇最后一個name為identity,或者class為Volvo的節(jié)點

四.xpath的幾個常用函數
1.contains()://div[contains(@id,'in')] ,表示選擇id中包含有’in’的div節(jié)點

2.text()://a[text()='baidu']表示文本值

3.last()

4.starts-with()://div[starts-with(@id,'in')] ,表示選擇以’in’開頭的id屬性的div節(jié)點

5.not():表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))],表示匹配出name為identity并且class的值中不包含a的input節(jié)點。

五.xpath的軸的概念
ancestor 選取當前節(jié)點的所有先輩(父,祖父等)

ancestor-or-self 選取當前節(jié)點的所有先輩(父,祖父等)以及當前節(jié)點本身

attribute 選取當前節(jié)點的所有屬性

child 選取當前節(jié)點的所有子元素

descendant 選取當前節(jié)點的所有后代元素(子,孫等)

descendant-or-self 選取當前節(jié)點的所有后代元素(子,孫等)及當前節(jié)點本身

following 選取當前節(jié)點的結束標簽時候的所有節(jié)點

following-sibling 選取當前節(jié)點之后的所有同級節(jié)點

namespace 選取當前節(jié)點的所有命名空間節(jié)點

parent 選取當前節(jié)點的父節(jié)點

preceding 選取當前節(jié)點開始標簽之前的所有節(jié)點

priceding-sibling 選取當前節(jié)點之前的所有同級節(jié)點

self 選取當前節(jié)點

六.xpath軸的用法
//div[@id='radio']//label[text()='Saab']/preceding-sibling::input[1] 選擇label的text為Saab的節(jié)點之前的同級節(jié)點中為input節(jié)點的第一個

用xpath軸時應注意的幾個問題:

1.調用軸時最好用'/';

2.軸后面要加上符號"::"

3.“::”后面可以接節(jié)點名稱,也可以接”*”

軸的另一種寫法:

//input[following-sibling::label[1][text()=‘Saab’]], 這個的作用與//div[@id='radio']//label[text()='Saab']/preceding-sibling::input[1]的作用是一樣的!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容