免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【selenium學習筆記】webdriver進行頁面元素定位

進行Web頁面自動化測試,對頁面上的元素進行定位和操作是核心。而操作又是以定位為前提的,因此,對頁面元素的定位是進行自動化測試的基礎(chǔ)。

頁面上的元素就像人一樣,有各種屬性,比如元素名字,元素id,元素屬性(class屬性,name屬性)等等。webdriver就是利用元素的這些屬性來進行定位的。

可以用于定位的常用的元素屬性:

  • id
  • name
  • class name
  • tag name
  • link text
  • partial link text
  • xpath
  • css selector
對應(yīng)于webdriver中的定位方法分別是:
  • driver.find_element_by_name()——最常用,簡單
  • driver.find_element_by_id()——最常用,簡單
  • driver.find_element_by_class_name()
  • driver.find_element_by_tag_name()——最不靠譜
  • driver.find_element_by_link_text()——定位文字連接好用
  • driver.find_element_by_partial_link_text()——定位文字連接好用
  • driver.find_element_by_xpath()——最靈活,萬能
  • driver.find_element_by_css_selector()
上面是定位一個元素的方法,相應(yīng)的webdriver也有定位一組元素的方法:
  • driver.find_elements_by_name()
  • driver.find_elements_by_id()
  • driver.find_elements_by_class_name()
  • driver.find_elements_by_tag_name()
  • driver.find_elements_by_link_text()
  • driver.find_elements_by_partial_link_text()
  • driver.find_elements_by_xpath()
  • driver.find_elements_by_css_selector()
那么問題來了?怎么查看元素的name,id,class,tag,text,xpath,css選擇器呢?可以借助firefox瀏覽器的firebug插件(需要手動安裝)中firepath工具或者chrome的開發(fā)者工具(chrome自帶)。
  • Friebug
打開firefox 瀏覽器的firebug 插件,點擊插件左上角的鼠標箭頭,再點擊頁面上的元素,firebug插件的HTML 標簽頁將看到頁面代碼,鼠標移動到元素的標簽上點擊一下。例如我們點擊百度首頁的“百度一下”按鈕:

從FirePath中可以看到該元素的id,tag,class等屬性。

  • Chrome開發(fā)者工具(F12)
打開Chrome瀏覽器,按下鍵盤的F12,即可以打開開發(fā)者工具。從開發(fā)者工具中可以得到和FirePath相同的結(jié)果:


那么問題又來了,這么多屬性都可以用來定位,那么我們選擇哪種呢?其實,定位元素的方法沒有好壞之分,不同的場景有不同的適用方法,只要定位的唯一的一個元素的方法都是可以使用的。
  • id 和name 定位
這是簡單的高效的方法。
比如定位百度首頁文本框的方法,我們可以使用id來定位(該元素提供的id屬性,可以唯一定位到它):
driver.find_element_by_id('kw')
定位百度首頁右上角的“設(shè)置”鏈接,我們可以使用name來定位(該元素提供的name屬性,可以唯一定位到它):
driver.find_element_by_name('tj_trnews')
  • class name和tag name定位
不是所有的前端開發(fā)人員都喜歡為每一個元素添加id 和name 兩個屬性,但除此之外你一定發(fā)現(xiàn)了一個元素不單單只有id 和name,它還有class 屬性;而且每個元素都會有tag標簽。
還是定位百度首頁的文本框,除了用id方法定位之外,我們還可以用class name來定位(該元素提供的class屬性,也可以唯一定位到它)。
driver.find_element_by_class_name("s_ipt")
tag name 定位應(yīng)該是所有定位方式中最不靠譜的一種了,因為在一個頁面中具有相同tag name 的元素極其容易出現(xiàn),很少具有唯一性。不用學習它了。
  • link text 與partial link text 定位
有時候需要操作的元素是一個文字鏈接,那么我們可以通過link text 或partial link text 進行元素定位。
比如,定位百度首頁右上角的“新聞”,“hao123”,。。。。等等這些文字連接。就可以使用link text和partail link text定位方式??梢韵仁褂肍ireBug看下網(wǎng)頁源碼:


通過linx text定位:
  1. find_element_by_link_text("新聞")
  2. find_element_by_link_text("貼吧")
通過partail link text定位:
  1. find_element_by_link_text("新")
  2. find_element_by_link_text("貼")
  • XPath 定位
XPath是一種文檔定位語言。因為HTML可以看做是XML的一種實現(xiàn),所以selenium用戶可使用這種強大的語言在web應(yīng)用中定位。
絕對路徑方法:
從根元素寫起,當元素層級很深的時候,路徑寫的會很長,閱讀性不好,也很難維護。不建議使絕對路徑這樣的方法。
相對路徑方法:
通過Firebug很容易得到相對路徑的xpath,打開Firebug插件,在頁面上的搜索文本框,就可以顯示出xpath了:
<pre name="code" class="python">driver.find_element_by_xpath("http://*[@id='kw']").click()
上面的寫法可以理解為,通過xpath尋找,任意(*代表)id屬性為’kw‘的元素。當然我們也可以把*替換成input,即:
driver.find_element_by_xpath("http://input[@id='kw']").click()
這種寫法可以理解為,通過xpath尋找,任意id屬性為’kw‘的input元素。
有的時候,需要根據(jù)上級目錄的屬性來定位當前元素:
  1. find_element_by_xpath("http://span[@id=’input-container’]/input") #通過上一級目錄的id 屬性定位
  2. find_element_by_xpath("http://div[@id=’hd’]/form/span/input") #通過上三級目錄的id 屬性定位
  3. find_element_by_xpath("http://div[@name=’q’]/form/span/input")#通過上三級目錄的name 屬性定位
  • CSS定位
這種定位方法是比較難理解的。TBD,當前工作中也沒有遇到,必須使用這種方式才能定位到元素的情況。

  • 關(guān)于自動化的定位問題
自動化測試的元素定位一直是困擾自動化測試新手的一個障礙,因為我們在自動化實施過程中會碰到各式各樣的對象元素。雖然XPath 和CSS 可以定位到復(fù)雜且比較難定位的元素,但相比較用id 和name 來說增加了維護成本和學習成本,相比較來說id/name 的定位方式更直觀和可維護,有新的成員加入的自動化時也增加了人員的學習成本。所以,測試人員在實施自動化測試時一定要做好溝通,規(guī)范前端開發(fā)人員對元素添加id/name 屬性,或者自己有修改HTML 代碼的權(quán)限。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python selenium元素定位——8種方法
python+selenium之元素識別二
Selenium2(WebDriver)總結(jié)(三)——元素定位方法
談?wù)勁老x中定位元素的常見方法
經(jīng)驗 | python 操作瀏覽器的三種方式
Selenium基本用法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服