Selenium Xpath定位方法總結以及Xpath調試

1.摘要
在web自動化測試中,最關鍵的就是界面元素定位了,在Selenium2Library中,支持以下定位符。

其中最簡單的就是Xpath定位了,雖然簡單,但它功能強大,有了Xpath,再也不擔心元素定位了。
2.Xpath簡介
Xpath不是selenium專用,只是作爲一種定位手段,爲selenium所用。Xpath是一門在xml文檔中查找信息的語言。Xpath可用來在xml文檔中對元素和屬性進行遍歷。由於html的層次結構與xml的層次結構天然一致,所以使用Xpath也能夠進行html元素的定位。

3.Xpath定位方法
瀏覽器中如何找到元素
Chrome瀏覽器:按F12,將鼠標點擊下圖中的圖標,再到瀏覽器頁面上選擇需要定位的元素,Elements頁中就會自動定位高亮顯示頁面中的元素。

 

3.1.絕對路徑定位
顧名思義,將Xpath表達式從html的最外層節點,逐層填寫,最後定位到操作元素
類似:
/html/body/app-root/html/body/app-root/div
這種方法,一旦路徑有變化會導致定位失敗,所以不推薦使用該方式。

3.2.相對路徑定位
絕對路徑與相對路徑的差別與文件系統中的絕對和相對路徑類似,相對路徑是隻給出元素路徑的部分信息,在html的任意層次中尋找符合條件的元素。
語句以//開始
例如:

通過相對路徑定位元素,提取的是元素的部分特徵,只要提取恰當,能夠保證版本間穩定,是進行自動化測試的首選,

示例中通過相對路徑直接定位,實際使用中會結合屬性等其他特徵,共同定位。
3.3.索引號定位
//form/div[1]:表示form下的第一個div

 

//form/div[last()]:表示form下的最後一個div

 

//form/div[last()-1]:表示form下的倒數第二個div

3.4.屬性值定位

//div[@class='iui-app-map-container']
表示class屬性爲iui-app-map-container的div

3.5.屬性值模糊匹配定位
模糊匹配的函數有兩種:

 

//label[starts-with(@class,'btn')]

//label[contains(@class,'btn')]

3.6.文本內容定位
文本內容的定位是利用html的text字段進行定位的方法,可以看做是屬性值定位的衍生
//button[text()='下一步']

由於“下一步”這幾個字是瀏覽器界面就可以看到的,我們稱爲“所見即所得”,這種特徵改的可能性非常小,所以非常未定,優先推薦使用。
與屬性值類似,文本內容也支持starts-with和contains模糊匹配。

3.7.Axis定位

 

 

例如:
//form/div[last()-1]/ancestor::div[@class='modal-content']

3.8.擴展
① Xpath定位擴展
使用通過子節點定位父節點
..代表父節點;../..爺爺節點
//span[contains(text(),'1.jpg')]/..
② Xpath還支持布爾定位
Xpath = //input[@id='kw1' and @name='wd']
可以and ,當然也可以or :
path = //input[@id='kw1' or @name='wd']

4.Xpath調試
如何知道Xpath表達式是否正確,是否可以找到元素呢?
可以在 console控制檯進行Xpath的調試
以 $x(“Xpath表達式”) 進行

 

5.Xpath總結
Xpath的功能非常強大,不僅能夠完成界面定位的任務,而且能保證穩定性,實際自動化測試中,能夠識別界面元素是重要的,更重要的是要保證版本間的穩定性,減少腳本的維護工作。
如下規則請參考:
特徵越少越好
特徵越是界面可見的越好
不能使用絕對路徑
避免使用索引號
擅用console調試
相對路徑,屬性值,文本內容,Axis可以任意組合,當然屬性值和文本內容的模糊匹配也支持和上述方式任意組合,

Axis可以嵌套使用。
通過Xpath的各種方式組合,能夠解決selenium自動化測試中界面定位的全部問題,可以說:有了Xpath,

再也不用擔心元素定位了。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章