從根節點(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 謂語定位 謂語被嵌在方括號內,用來查...