Selenium webdriver中的xpath定位

  使用selenium進行自動化測試,其實不少時候就是模擬用戶的操做,在前端頁面對元素進行操做,所以元素的定位在自動化測試中是相當重要的。關於如何html

使用id,className,name,linkText這些簡單的定位方式查找元素,本文將很少作介紹。前端

  本文中主要介紹selenium webdriver中的核心定位方式——xpath定位。web

  

 1. xpath語法sql

 

  //tagname[@attribute=‘value’]chrome

 

  其中,tagname表示標籤名稱,@後面跟隨屬性名稱,等號後面是屬性值。若是須要查找多重下級,則在父級的xpath路徑後繼續追加定位,例如://div[@id='car_genre_id']/div/div,表示 id是car_genre_id的div元素的子節點div的子節點div。瀏覽器

2. xpath的絕對路徑和相對路徑工具

 

  1)單斜線‘/’表明絕對路徑,表示該富豪後面的元素是上一級節點的子節點的一個,只能一級級按序向下查詢,不能跳級;測試

  2)雙斜線'//'表明相對路徑,表示下級任何子節點或者任何嵌套子節點中的一個,能夠跳級;優化

 

  舉個栗子,在路徑//div[@id='root']/input中,表示越過全部父節點,直接在整個html頁面中查找id是'root'的div元素,由於div標籤前是表明相對定位的雙斜線'//';而對於input標籤來講,它必須是id是'root'的div的一級子節點,它和div中間不能越過其餘的層級,由於input標籤前是表明絕對路徑的單斜線'/' 。spa

 

3. 如何獲取元素的xpath路徑

 

  大多瀏覽器的開發者模式中都具有了輸出元素xpath路徑的功能。以chrome爲例,點擊F12後,在DOM樹中選中元素,右鍵> Copy > CopyXpath後,在記事本上黏貼,便可獲得該元素的xpath路徑。

  

 

  4. 使用contains屬性查找元素

 

    contains表示查找屬性包含該屬性值value的頁面標籤元素,注意是包含,並非徹底等於,相似於sql查找語句中like的用法。

    語法爲:  //tagname[contains(attribute1,'value1') and contains(attribute2,'value2') and ... ]  

    舉個栗子,路徑 //div[@id="root"]//div[contains(text(),'共'] ,表示在id是'root'的div中,越過層級關係,查找文本信息包含"共"的div元素;

    路徑//div[@id='root']//div[contains(className,'ant-Btn')], 表示在id是'root'的div中,越過層級關係,查找className屬性中包含'ant-Btn'屬性的元素;

 

 5. 查找父級節點和平級節點

  

  查找父級節點: xpath-to-some-element//parent::tagname

  向前查找平級節點:xpath-to-some-element//preceding-sibling::tagname

  向後查找平級節點:xpath-to-some-element//following-sibling::tagname

 

 

6. 使用xpath定位元素時須要注意的地方

  

  1)保證xpath路徑的惟一性。

    必定要保證xpath路徑在頁面中是惟一的。若是不太肯定,能夠在chrome的開發者工具打開的狀況下,點擊ctrol+F,在彈出的輸入框中輸入xpath

的路徑,觀察當前頁面下,以該路徑查找到的元素是否是隻有一個;

 

  2)儘可能不要使用通配符*

    *表示能夠是當前頁面中的任意標籤,這樣在查找時會增大負載,儘可能準確地寫出標籤名稱。

 

  3)建議使用相對路徑定位

    若是前面頁面的元素結構發生調整,那麼以前的絕對定位就會做廢。而使用相對路徑,能夠減小定位對頁面HTML元素結構的依賴性,且相對路徑

每每長度較短,更加準確美觀。在優化定位方式時,能夠將此原則做爲參考。

相關文章
相關標籤/搜索