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


一.概述

      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]的作用是一樣的!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM