標籤:

Selenium學習之Xpath:從工具到脫離工具

今天在群里有兩位網友問了關於Xpath的問題,第一位我讓他看看firepath這個工具,第二位我讓他別用firepath這個工具。趁此機會,對xpath的學習做一個分享。

一、第一個問題

第一位網友自己寫了一個定位語句,然後用selenium去點擊某個元素。結果,selenium報錯說找不到這個元素。

如果你也是經常這樣子,那可以去下載安裝firebug和firepath這兩個工具。這兩個工具屬於火狐瀏覽器的插件,即使你用最新版的火狐,也可以載入過期的插件。

firepath的好處就是可以幫你生成xpath定位語句。

如下,點擊某個頁面元素時,自動生成了對應的xpath

初學者在定位一個元素時,建議:

  1. 先看id和name,有的話就用。
  2. 如果id和name是動態生成或者不存在的,考慮用xpath(或css)。
  3. 如果你用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 |