selenium+Python元素定位

來源:互聯網
上載者:User

標籤:超連結   toc   如何   input   準備   百度網   擷取元素   一個   模糊比對   

自動化只要掌握四步操作:擷取元素,操作元素,擷取返回結果,斷言(返回結果與期望結果是否一致),最後自動出測試報告。

元素定位在這四個環節中是至關重要的,如果說按學習精力分配的話,元素定位佔70%;操作元素10%,擷取返回結果10%;斷言10%。如果一個頁面上的元素不能被定位到,那後面的操作就無法繼續了。接下來就來講webdriver提供的八種基本元素定位方法。 

一、環境準備:

    1.瀏覽器選擇:Firefox

    2.安裝外掛程式:Firebug和FirePath(設定》附加組件》搜尋:輸入外掛程式名稱》下載安裝後重啟瀏覽器)

    3.安裝完成後,頁面右上方有個小爬蟲表徵圖

    4.快速查看xpath外掛程式:XPath Checker這個可下載,也可以不用下載

    5.外掛程式安裝完成後,點開附加組件》擴充,如所示

二、查看頁面元素:

以百度搜尋方塊為例,先開啟百度網頁

    1.點右上方爬蟲按鈕

    2.點左下角箭頭

    3.講箭頭移動到百度搜尋輸入框上,輸入框高亮狀態

    4.下方紅色地區就是單位到輸入框的屬性:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd">

 



三、元素定位:find_element_by_id()

    1.從上面定位到的元素屬性中,可以看到有個id屬性:id="search-key",這裡可以通過它的id屬性單位到這個元素。

    2.定位到搜尋方塊後,用send_keys()方法

 


元素定位:find_element_by_name()

    1.從上面定位到的元素屬性中,可以看到有個name屬性:name="wd",這裡可以通過它的name屬性單位到這個元素。

    說明:這裡運行後會報錯,說明這個搜尋方塊的name屬性不是唯一的,無法通過name屬性直接定位到輸入框

 


元素定位:find_element_by_class_name()

    1.從上面定位到的元素屬性中,可以看到有個class屬性:class="s_ipt",這裡可以通過它的class屬性定位到這個元素。

 


元素定位:find_element_by_tag_name()

    1.從上面定位到的元素屬性中,可以看到每個元素都有tag(標籤)屬性,如搜尋方塊的標籤屬性,就是最前面的input

    2.很明顯,在一個頁面中,相同的標籤有很多,所以一般不用標籤來定位。以下例子,僅供參考和理解,運行肯定報錯

 

 
元素定位:find_element_by_link_text()

    1.定位百度頁面上"hao123"這個按鈕

查看頁面元素:

<a class="mnav" target="_blank" href="http://www.hao123.com">hao123</a>

    2.從元素屬性可以分析出,有個href = "http://www.hao123.com

說明它是個超連結,對於這種元素,可以用以下方法

 

 
元素定位:find_element_by_partial_link_text()

    1.有時候一個超連結它的字串可能比較長,如果輸入全稱的話,會顯示很長,這時候可以用一模糊比對方式,截取其中一部分字串就可以了

    2.如“hao123”,只需輸入“ao123”也可以定位到

 

 

元素定位:find_element_by_xpath()

    1.以上定位方式都是通過元素的某個屬性來定位的,如果一個元素它既沒有id、name、class屬性也不是超連結,這麼辦呢?或者說它的屬性很多重複的。這個時候就可以用xpath解決

    2.xpath是一種路徑語言,跟上面的定位原理不太一樣,首先第一步要先學會用工具查看一個元素的xpath

 

     3.安裝的步驟,在FriePath外掛程式裡copy對應的xpath地址

 

 
元素定位:find_element_by_css_selector()

    1.css是另外一種文法,比xpath更為簡潔,但是不太好理解。這裡先學會如何用工具查看,後續的教程再深入講解

    2.開啟FirePath外掛程式選擇css

    3.定位到後如紅色地區顯示

 

 總結:

selenium的webdriver提供了八種基本的元素定位方法,前面六種是通過元素的屬性來直接定位的,後面的xpath和css定位更加靈活,需要重點掌握其中一個。

1.通過id定位:find_element_by_id()

2.通過name定位:find_element_by_name()

3.通過class定位:find_element_by_class_name()

4.通過tag定位:find_element_by_tag_name()

5.通過link定位:find_element_by_link_text()

6.通過partial_link定位:find_element_by_partial_link_text()

7.通過xpath定位:find_element_by_xpath()

8.通過css定位:find_element_by_css_selector()

 

selenium+Python元素定位

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.