Selenium學習之Xpath:從工具到脫離工具
今天在群里有兩位網友問了關於Xpath的問題,第一位我讓他看看firepath這個工具,第二位我讓他別用firepath這個工具。趁此機會,對xpath的學習做一個分享。
一、第一個問題
第一位網友自己寫了一個定位語句,然後用selenium去點擊某個元素。結果,selenium報錯說找不到這個元素。
如果你也是經常這樣子,那可以去下載安裝firebug和firepath這兩個工具。這兩個工具屬於火狐瀏覽器的插件,即使你用最新版的火狐,也可以載入過期的插件。
firepath的好處就是可以幫你生成xpath定位語句。
如下,點擊某個頁面元素時,自動生成了對應的xpath
初學者在定位一個元素時,建議:
- 先看id和name,有的話就用。
- 如果id和name是動態生成或者不存在的,考慮用xpath(或css)。
- 如果你用xpath,就用firepath幫你生成
另外,WebDriver Element Locator 這個工具也可以用。他會直接給出定位語句。
二、第二個問題
第二位網友遇到的問題也是我們常常遇到的。他在firepath的幫助下用xpath成功定位了一個元素,但是當執行selenium腳本時,這個元素的定位卻失敗了。
如果你也遇到類似問題,那麼,其實你也意識到了:工具不是萬能的。
有時網頁比較動態,同一個xpath表達式可能在某次打開網頁時就不能成功定位了。這很正常。
這時候的建議是:
根據xpath的語法,自己嘗試寫一個不依賴於某些動態元素的xpath表達式來定位這個元素。
Xpath的語法,請前往w3cschool的網站學習。我相信花點時間看完教程的人都能掌握這個定位語法。而這一步是selenium的初學者到熟練使用者的必經之路。這個教程已經很好了,我沒什麼要補充的。不過對於一些明顯定位困難的特殊控制項,還是建議想辦法繞過,比如用js給日曆控制項賦值。
三、從工具到脫離工具
有趣的是,這兩個xpath問題的解決方法,正好相反,一個是去用工具,一個是要脫離工具。在這兩者之間,我再推薦一個工具:Try Xpath(Try XPath)
這個firefox插件可以讓你自己在插件里寫xpath,它會根據你寫的xpath找到元素,並在瀏覽器里圈出來。使用這個工具來熟練你所掌握的xpath語法,最終脫離工具。(之前我學的時候是用的Xpath checker,不過作者好像把它刪了。現在這類工具很多,隨便就能找到。)
最後,熟練地定位元素,只是做圖形界面自動化的第一步,希望初學的朋友早日脫離工具,手寫定位語句。
首發於公眾號:測試進階(test_up),另外公眾號還會分享一些面試題或練習題。
推薦閱讀:
※selenium自動化測試入門 層級定位與定位一組元素
※4.3 通過selenium 模擬瀏覽器抓取
※selenium自動化測試入門 設置等待時間
TAG:Selenium |