一.概述
xpath是一種選擇器,是一種xml路徑語言,在自動化測試過程中能夠准確的定位頁面的元素,可以說xpath
能解決99%的元素定位的問題;
二.xpath常用符號說明
/ 表示絕對路徑,絕對路徑是指從根目錄開始
//表示相對路徑
.表示當前層
..表示上一層
*表示通配符
@表示屬性
[]屬性的判斷條件表達式
三.常用的xpath的寫法
/html/div
/html//div 表示選擇根目錄下的所有的子孫后代節點中的div節點,//表示相對路徑
//div 表示選擇所有的div節點
//div/div 表示選擇所有的div節點的子節點中含有div的節點
//div/div/. 表示選擇//div/div節點的當前層的節點,與//div/div的結果相同
//div/div/.. 表示選擇//div/div節點的上一層節點,也就是選擇一個div節點,該div節點的子節點有div節點
//div/div/* ,表示選擇//div/div的所有子節點,//div/div會有兩個匹配出來的節點
//div[@id='input'] 表示選擇一個id為’input’的div節點
//div[@id='input']/input 表示選擇一個id為’input’的div節點的input子節點
//table//input[@id='user'] 表示選擇table的子孫后代中id為user的input節點
//input[@name='identity' and @class='Volvo'] 選擇一個name為identity並且class為Volvo的input節點
//input[@name='identity' or @class='Volvo'] 選擇一個name為identity,或者class為Volvo的節點
//input[@name='identity' or @class='Volvo'][1] 選擇第一個name為identity,或者class為Volvo的節點
//input[@name='identity' or @class='Volvo'][last()] 選擇最后一個name為identity,或者class為Volvo的節點
四.xpath的幾個常用函數
1.contains()://div[contains(@id,'in')] ,表示選擇id中包含有’in’的div節點
2.text()://a[text()='baidu']表示文本值
3.last()
4.starts-with()://div[starts-with(@id,'in')] ,表示選擇以’in’開頭的id屬性的div節點
5.not():表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))],表示匹配出name為identity並且class的值中不包含a的input節點。
五.xpath的軸的概念
ancestor 選取當前節點的所有先輩(父,祖父等)
ancestor-or-self 選取當前節點的所有先輩(父,祖父等)以及當前節點本身
attribute 選取當前節點的所有屬性
child 選取當前節點的所有子元素
descendant 選取當前節點的所有后代元素(子,孫等)
descendant-or-self 選取當前節點的所有后代元素(子,孫等)及當前節點本身
following 選取當前節點的結束標簽時候的所有節點
following-sibling 選取當前節點之后的所有同級節點
namespace 選取當前節點的所有命名空間節點
parent 選取當前節點的父節點
preceding 選取當前節點開始標簽之前的所有節點
priceding-sibling 選取當前節點之前的所有同級節點
self 選取當前節點
六.xpath軸的用法
//div[@id='radio']//label[text()='Saab']/preceding-sibling::input[1] 選擇label的text為Saab的節點之前的同級節點中為input節點的第一個
用xpath軸時應注意的幾個問題:
1.調用軸時最好用'/';
2.軸后面要加上符號"::"
3.“::”后面可以接節點名稱,也可以接”*”
軸的另一種寫法:
//input[following-sibling::label[1][text()=‘Saab’]], 這個的作用與//div[@id='radio']//label[text()='Saab']/preceding-sibling::input[1]的作用是一樣的!
