1. 程式人生 > >selenium之xpath定位

selenium之xpath定位

語言 過濾 lang 部分 xpath定位 神器 標簽 XML 定位

由於最新版火狐不在支持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‘]

selenium之xpath定位