Selenium - Xpath 使用方法


由於最新版火狐不在支持FireBug等開發工具,可以通過https://ftp.mozilla.org/pub/firefox/releases/ 下載49版本以下的火狐就可以增加Firebug等擴展了。

什么是Xpath?

XPath是XML的路徑語言,通俗一點講就是通過元素的路徑來查找到這個標簽元素。

工具

Xpath可以下載火狐瀏覽器插件FireBug

 

用法:

1. /(絕對路徑,從根節點選取) 
2. //(相對路徑,所有子代節點,不用考慮是否直接子節點) 
3. @ 選取屬性 
4. “.”選取當前節點 
5. “..”選取當前節點的父節點

使用方法:

注://* 代表定位頁面下所有元素,固定模式 @引用某樣屬性 id ='xxx'

1、Xpath支持ID、Class、Name定位功能,將 * 換位任意標簽名,則可根據標簽進行篩選

通過ID定位
 
//*[@id='i1']
//div[@id='i2']
 
通過Class定位
 
//*[@class='inner']
//div[@class='inner1']
 
通過Name定位
 
//*[@name='name']
//input[@name='name']
class包含xxx的div
//div[contains(@class,’xxx’)] 

2. 如果標簽沒有ID、Class、Name三總屬性,Xpath還支持屬性定位功能

//*[@placeholder='請輸入用戶名']

3. 當標簽頁重復時,Xpath提供了層級過濾

支持通過 / 進行層級遞進,找到符合層級關系的標簽
//input[@value=text][8]  ->>第8個input的value=text

//div[@class='inner'][3]/input[@type='text']
當層級都重復時,可以通過單個層級的屬性進行定位

//div[@
class='driver'][1]/div[@class='inner'][3]/input

4. 一個元素它的兄弟元素跟它的標簽一樣,這時候無法通過層級定位到。因為都是一個父親生的,多胞胎兄弟。Xpath提供了索引過濾

通過索引,在List中定位屬性,與python的索引有些差別,Xpath從1開始
 
//select[@name='city'][1]/option[1]

5. 上面集中如果都用上了之后還重復的話,我們就可以使用Xpath提供的終極神器,邏輯運算定位。and 或 or

通過and來縮小過濾的范圍,只有條件都符合時才能定位到
 
//select[@name='city' and @size='4' and @multiple="multiple"]
 
or就相反了,只要這些篩選中,其中一個出現那么久匹配到了
 
//select[@name='city' or @size='4']

 

Xpath拓展

following-sibling: 選擇當前節點之后的所有同級節點,那么沒有加上“sibling”關鍵字的,搜索的就是之上/之下的所有節點,忽略同級概念,例如:

<div>
<input id="123">
<input>    
</div>

 

要定位第二個input://input[@id=’123’]/following-sibling::input

  • preceding-sibling: 選取當前節點之前的所有同級節點

  • starts-with: 以某某開頭,例如://input[starts-with(@class,’xxx’)]

  • 絕對路徑 html/body/div/span[2]/input[2] 中間結構變化,就失效

  • 相對路徑 //開始,在整個html source里找,不管在什么位置

  • 索引[x] //div/input[2] div下面第二個input

  • 完全匹配 xpath=//*[text()=”Join”]

  • not關鍵字 就是否定的意思 
    比如找一個id不為123的input:input[not[id=’123’]] 
    又如找一個文本中不包含xxx字段的span://span[not(contains(text(),’xxx’))]

  • 通配符 * 
    比如//span[@*=”xxx”]指定位span中任意屬性包含xxx的 
    比如//[@=”xxx”]指定位頁面中任意屬性保護xxx的標簽

 


免責聲明!

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



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