xpath定位方法

2022-07-20 12:51:14 字數 3810 閱讀 4936

從根節點(html)開始,路徑分割符是/(斜槓,類似於linux中路徑分割符)

如:/html/body/div/span

表示對應路徑下的span元素

以//開頭後面加元素名稱, 用法類似於css中的後代選擇器,可以把//對應css中空格

如://span

表示html文件下所有的span元素

如://div//span

表示方法類似於css中的 div span

//*[@屬性] 表示選擇具有某個屬性的元素

//*[@屬性=」屬性值「] 表示選擇具有某個屬性值的元素,屬性值必須加引號(單引號雙引號都可以)

//*[@style] 選擇所有具有style屬性的元素

//p[@spec='len2'] 選擇所有具有spec 值為 len2 的元素

tips:在xpath中沒有表示id和class的特殊方法,id 、class 也是屬性

根據部分屬性選擇元素的方法:

//*[contains(@屬性,」value「)] 表示屬性包含value 例子//*[contains(@id,'food')]

//*[starts-with(@屬性,」value「)] 表示屬性以value開頭 例子://*[starts-with(@id,'choose_')]

//a[ends-with(@href,'51job.com')] 表示屬性href以51job.com結尾(目前瀏覽器還不支援這種表示方法)

使用text()函式匹配元素文字://a[text()="高階搜尋"]

1、通過下標方式獲取,下標從1開始 

("//*[@id='food']/p[1]") #獲取id為food下p元素中的第乙個

("//*[@id='food']/*[1]") #獲取id為food下所有元素中的第乙個

2、倒數索引:

使用last()可以計數,代表最大數量   

//*[@id='food']/span[last()] 獲取id為food下span元素中的最後乙個 

//*[@id='food']/span[last()-1] 獲取id為food下span元素中的倒數第二個

//*[@id='food']/*[last()] 獲取id為food下所有元素中的倒數第乙個

3、position()用法:

//*[@id='food']/p[position()=1]  獲取id為food下p元素中的第乙個

//*[@id='food']/*[position()=2] 獲取id為food下所有元素中的第二個

//*[@id='food']/*[position()=last()] 獲取id為food下所有元素中的最後乙個

向後查詢

獲取id為food下第乙個span元素的相鄰span元素,可以是多個,指定下標為1,最近的乙個 last()最遠的乙個

//*[@id='food']/span[1]/following-sibling::span

向前查詢

//*[@id='food']/preceding-sibling::div[1] 指定下標1代表離的最近

使用場景:通常你想定位的元素沒有特徵,只有他的子節點有id這種特徵

沃爾沃option>

卡羅拉option>

菲亞特option>

奧迪option>

select>

//*[@value='volvo']/.. 定位到屬性value的值為volvo的父元素也就是id="choose_car">的select

然後依次類推,還可以獲取父元素的父元素

相對定位法:

food = driver.find_element_by_id("food")

vegetable = food.find_element_by_xpath('./p[2]')

如果我想獲取的是food這個元素範圍內的呢,大家就要在這個表示式前面加乙個點,這個點表示在當前的元素範圍內。

例子:

黃瓜span>所有元素第乙個

牛肉span>

黃瓜ppp>p元素第乙個

青菜p>

div>

driver =webdriver.chrome()

driver.get(

'file:///c:/users/administrator/desktop/lesson_code/autoui_selenium/lesson05/s1.html')

#獲取id為food下p元素中的第乙個

ele = driver.find_element_by_xpath("

//*[@id='food']/p[1]")

print(ele.text) #

黃瓜pp

#獲取id為food下所有元素中的第乙個

ele2 = driver.find_element_by_xpath("

//*[@id='food']/*[1]")

print(ele2.text) #黃瓜#

獲取id為food下span元素中的最後乙個

ele3 = driver.find_element_by_xpath("

//*[@id='food']/span[last()]")

print(ele3.text) #牛肉#

獲取id為food下span元素中的倒數第二個

ele4 = driver.find_element_by_xpath("

//*[@id='food']/span[last()-1]")

print(ele4.text) #黃瓜#

獲取id為food下所有元素中的倒數第乙個

ele5 = driver.find_element_by_xpath("

//*[@id='food']/*[last()]")

print(ele5.text) #青菜#

獲取id為food下p元素中的第乙個

ele6 = driver.find_element_by_xpath("

//*[@id='food']/p[position()=1]")

print(ele6.text) #

黃瓜pp

#獲取id為food下所有元素中的第二個

ele7 = driver.find_element_by_xpath("

//*[@id='food']/*[position()=2]")

print(ele7.text) #牛肉#

獲取id為food下所有元素中的最後乙個

ele8 = driver.find_element_by_xpath("

//*[@id='food']/*[position()=last()]")

print(ele8.text) #青菜#

獲取id為food下第乙個span元素的相鄰span元素,可以是多個,指定下標為1,最近的乙個 last()最遠的乙個

ele9 = driver.find_element_by_xpath("

//*[@id='food']/span[1]/following-sibling::span[1]")

print(ele9.text) #

牛肉food = driver.find_element_by_id("

food")

vegetable = food.find_element_by_xpath('

./p[2]')

print(vegetable.text) #

青菜driver.quit()

定位方法之xpath定位

1 xml 可擴充套件標記語言,是對html的擴充套件,語法和html相似,只是它的標記和屬性是可以自己根據業務需要來定義的,而html裡的標記和屬性都是固定的。2 xpath xml path,就是xml路徑語言,是在xml裡查詢元素或屬性的一種技術,用描述元素在整個檔案裡所在路徑的方式來查詢資訊...

xpath定位方法詳解

1.xpath較複雜的定位方法 現在要引用id為 j password 的input元素,可以像下面這樣寫 webelement password driver.findelement by.xpath id j login form dl dt input id j password 其中 id ...

xpath定位方法詳解

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