selenium之xpath定位


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

什么是XPATH?

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。通俗一點講就是通過元素的路徑來查找到這個標簽元素。

工具

Xpath的練習建議大家安裝火狐瀏覽器后,下載插件,FireBug。

Xpath的定位方法

定位方法是一些固定的格式和規則,利用火狐瀏覽器在開發者模式下,輸入//*即可定位當前頁面所有的標簽。

1.Xpath支持ID,class,name定位(例如:定位百度的搜索框)

通過Id來定位
//*[id='kw']
通過name來定位
//*[@name='wd']
通過class來定位
//*[@class='s_ipt']

2.如果沒有ID,class,name標簽,XPATH還支持屬性定位。(比如href='//www.baidu.com/cache/sethelp/help.html'標簽是唯一屬性時)

通過其他唯一屬性來定位
//*[@href='//www.baidu.com/cache/sethelp/help.html']

3.當標簽的屬性重復時,Xpath提供了通過標簽來進行過濾。

當input標簽含有多個時,通過input下的其他屬性進行定位
//input[@placeholder='x2']
即首先定位到所有的Input標簽,然后再篩選出placeholder='x2'的標簽

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

例如:找不到兒子,那么就先找他的爸爸,是在不行可以在找他的爺爺

支持通過 / 進行層級遞進,找到符合層級關系的標簽
 
//form/div/input[@placeholder="用戶名"]
 
當層級都重復時,可以通過單個層級的屬性進行定位
 
//form/div[@class='login-user']/input

5.當父級或兄弟級屬性都相同無法定位時,Xpath提供了索引過濾。

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

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

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

 


免責聲明!

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



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