xpath定位方法詳解

2021-07-24 12:15:22 字數 1808 閱讀 4003

1.xpath較複雜的定位方法:

現在要引用id為「j_password」的input元素,可以像下面這樣寫:

webelement password = driver.findelement(by.xpath(「//*[@id=』j_login_form』]/dl/dt/input[@id=』j_password』]」));

其中//[@id=』 j_login_form』]這一段是指在根元素下查詢任意id為j_login_form的元素,此時相當於引用到了form元素。後面的路徑必須按照原始碼的層級依次往下寫。按照圖所示**中,我們要找的input元素包含在乙個dt標籤內,而dt又包含在dl標籤內,所以中間必須寫上dl和dt兩層,才到input這層。當然我們也可以用號省略具體的標籤名稱,但元素的層級關係必須體現出來,比如我們不能寫成//*[@id=』j_login_form』]/input[@id=』j_password』],這樣肯定會報錯的。

另外一種寫法:webelement password = driver.findelement(by.xpath(「//[@id=』j_login_form』]//*/input[@id=』j_password』]」));

2.xpath的模糊定位方法:

這段**中的「退出」這個超連結,沒有標準id元素,只有乙個rel和href,不是很好定位。用xpath的幾種模糊匹配模式來定位它,主要有四種方式:

a. 用contains關鍵字,定位**如下:

driver.findelement(by.xpath(「//a[contains(@href, 『logout』)]」));

這句話的意思是尋找頁面中href屬性值包含有logout這個單詞的所有a元素,由於這個退出按鈕的href屬性裡肯定會包含logout,所以這種方式是可行的,也會經常用到。其中@後面可以跟該元素任意的屬性名。

b. 用start-with,定位**如下:

driver.findelement(by.xpath(「//a[starts-with(@rel, 『nofo』)]));

這種方式一般用於知道超連結上顯示的部分或全部文字資訊時,可以使用。

這句的意思是尋找rel屬性以nofo開頭的a元素。其中@後面的rel可以替換成元素的任意其他屬性

c. 用text關鍵字,定位**如下:

driver.findelement(by.xpath(「//a[contains(text(), 』退出』)]));

直接查詢頁面當中所有的退出二字,根本就不用知道它是個a元素了。這種方法也經常用於純文字的查詢

d.如果知道超連結元素的文字內容,也可以用

driver.findelement(by.xpath(「//a[contains(text(), 』退出』)]));

3.xpath 關於網頁中的動態屬性的定位,例如,asp.net 應用程式中動態生成 id 屬性值,可以有以下四種方法:

a.starts-with 例子: input[starts-with(@id,』ctrl』)] 解析:匹配以 ctrl開始的屬性值

b.ends-with 例子:input[ends-with(@id,』_username』)] 解析:匹配以 username 結尾的屬性值

c.contains() 例子:input[contains(@id,』username』)] 解析:匹配含有 username 屬性值

參考**:

xpath詳解:

xpath定位方法詳解

1 節點定位 常用的路勁表示式 表示式描述 例項根節點擊取,絕對路徑 div 所有節點擊取,相對路徑 div 選取所有的div節點 當前節點 div 選取當前節點下的div節點 選取當前節點的父節點 回到上乙個節點 屬性 class 選取所有的class屬性 2 謂語定位 謂語被嵌在方括號內,用來查...

詳解xpath定位

xpath定位 1 通過開發者工具直接copy 右擊copy copy xpath 2 串聯的方式定位元素 3 通過父元素定位子元素 from selenium import webdriver from time import sleep driver webdriver.chrome drive...

xpath定位方法

從根節點 html 開始,路徑分割符是 斜槓,類似於linux中路徑分割符 如 html body div span 表示對應路徑下的span元素 以 開頭後面加元素名稱,用法類似於css中的後代選擇器,可以把 對應css中空格 如 span 表示html文件下所有的span元素 如 div spa...