search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Python+Selenium基礎篇之4-XPath的使用

《自動化測試系列教程》本系列教程系朋友學習自動化測試過程做的筆記。計劃60篇幅。

朋友原話:「我的寫文章的路線是,教程系列是 一步一步教你設計Python+Selenium自動化測試框架,其中包括4個部分,基礎篇(五篇),練習篇,中級篇,框架設計篇」。希望對想學自動化測試的朋友有所幫助。

PS:

1:文章末尾會有本系列教程的課程的傳送門方便大家系統學習

2:同時也會附上凱哥的聯繫方式,歡迎大家聯繫

正文開始:

開始寫自動化腳本之前,我們先學習幾個概念,在完全掌握了這幾個概念之後,有助於我們快速上手,如何去編寫自動化測試腳本。

元素,在這個教程系列,我們說的元素之網頁元素(web element)。在網頁上面的文本輸入框,按鈕,多選,單選,標籤,和文字都叫元素,總之,凡是能在頁面顯示的對象都可以作為頁面元素對象。

元素定位,有時候也叫Locator,一個HTML頁面元素,可以用很多方法去描述這個元素的位置。打個比方,生活中地址,一個大廈,正常的地址是 xx省xx市xx區xx街道xxx號,這個具體描述就是這個大廈的Locator。同樣的道理,一個網頁元素,也有位置,也可以通過一些手段或者表達式去描述這個元素在頁面對應的位置。

XPath,XPath即為XML路徑語言,它是一種用來確定XML(標準通用標記語言的子集)文檔中某部分位置的語言。XPath基於XML的樹狀結構,提供在數據結構樹中找尋節點的能力,XPath 很快的被開發者採用來當作小型查詢語言。

Selenium一共有八種元素定位方法,其中,在實際開發自動化腳本過程中,XPath的使用是最多的一種方法,所以本文就介紹如何通過XPath來元素定位。學習了XPath元素定位后,其他7中方法,很容易理解,甚至已經學會了其中好幾種方法。

一.XPath工具安裝

為了提高抓取元素XPath的,我推薦在Firefox上安裝一個firepath的插件,這個插件,可以幫我們快速獲取網頁元素的XPath表達式。

1. 打開火狐瀏覽器,如果沒有安裝,下載默認安裝

2. 點擊右上角,菜單-附件組件-擴展

3. 在搜索所有附件組件文本輸入框輸入:firepath

4. 找到FirePath,點擊 安裝

5. 安裝好了之後,會在火狐瀏覽器右上角顯示一個蟲子的圖標。

二.XPath工具簡單使用

我們用定位百度首頁的搜索輸入框這個元素定位來演示。

1. 打開百度首頁

2. 滑鼠定位到搜索輸入框

3. 右鍵滑鼠,選Inspect in FirePath

4. 打開界面如下圖

①FirePath自動推薦該元素的XPath表達式

②該元素節點的詳細信息,XPath表達式選取重點區域

③找到一個匹配元素

一般來說,自動推薦的XPath表達式定位不夠精確。我們大部分時候需要去步驟2中,找出能夠識別這個唯一元素的節點信息。剛好上面通過id=kw只能找到一個匹配的元素,說明這個XPath可用,看起來也簡潔。實際項目中,可能XPath表達式寫得很長,或者附近節點信息好多相同,不太好能夠快速找到一個唯一的節點信息去定位這個目標元素。接下來,我介紹幾種比較實用的XPath定位技巧,基本上能定位到所有的網頁元素。

三.XPath定位技巧之text方法

以百度首頁右上角「新聞」定位舉例

XPath如下圖

四.XPath定位技巧之contains方法

有時候,我們不喜歡寫很長的XPath表達式,而且節點信息裡面,有些信息是動態的,每次都獲取都不一樣,這個時候contains方法就很好用。

JD首頁左側電腦菜單舉例

XPath寫法推薦,這裡用contains方法來定位

這裡href = //diannao.jd.com, 如果我覺得這個href太長,我只取關鍵字diannao,利用contains方法來定位就方便多了,推薦電腦這個元素的XPath://*/a[contains(@href,'diannao')]

五. 相對XPath路徑寫法

有時候,我們遇到目標元素節點的信息很少,不足夠用來精確定位到目標元素,這個時候,我們就需要考慮,利用目標元素上下附件節點,通過確定附件的節點從而確定目標元素,這種方式就叫相對路徑。

這裡用百度新聞首頁的一個單選按鈕來舉例;

火狐瀏覽器上firepath給出的推薦表達式是:

這裡推薦的XPath是根據目標元素節點中id信息來定位的,這個通過id就能定位,當然好。有時候,如果這個id不能作為參考值,我們需要利用相對定位方法來定位這個新聞標題前面的單選按鈕;

1)先根據for = newstitle 或者text=新聞標題來定位「新聞標題」這個標籤。

2)根據相對定位來確定「新聞標題」前面的這個radio按鈕。

3)XPath的寫法是:.//*/label[@for='newstitle']/../input[@id='newstitle']

由於,當前這個舉例不是很符合只能採用相對定位才能確定元素的場景,感覺這個表達式定位,在這裡反而更複雜化,但是,相對定位元素方法是一樣的,和上面舉例的步驟、思維方式是一致的。如果發生了,無法通過目標元素節點信息來定位,那麼,就要考慮是否採用相對路徑來解決這個問題。元素定位,理論上是沒有定位不到的元素,通過以上方法,基本上能定位項目中大部分元素。XPath元素定位就先介紹到這裡,以後如果有其他新的好的方法,會添加到這篇文章,接下來,我們開始寫一個真正意義上的第一個webui自動化腳本,請看下一篇。

註:如果發現文章不是連續性的。因發布被審核不通過所以發表不了。請看ps內容

ps:

歡迎關注凱哥微信公眾號:凱哥Java



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦