自動化測試:Selenium的元素定位方式

幾乎所有的自動化工具要模擬用戶操作,都要識別出用戶在對哪個元素做什麼操作。

哪個元素即操作元素的識別,就是大家通常說的元素定位。Selenium根據我們提供的元素定位信息,找到對應元素,然後做後續的操作。如果元素定位有問題,則可能導致操作失敗,或者操作到其他元素,導致無法實現預期效果。

那麼如何進行元素定位呢,Selenium的WebDriver提供了8大元素定位方式,我們先看前六種元素定位方式。

1.0如何查看元素屬性

如何知道一個按鈕的ID是什麼,Name或者Class Name是什麼呢?

每個瀏覽器幾乎都有開發者工具,我們可以在裡邊進行Web前端的調試等操作:

A.可以在瀏覽器菜單中查找,或者直接按F12打開開發者工具;


自動化測試:Selenium的元素定位方式

打開開發者工具


B.切換到Elements頁籤,

C.點擊左上角鼠標圖標,

D.把鼠標移動到想查看的元素上,右側展示對應web元素的屬性等信息

自動化測試:Selenium的元素定位方式

查看元素屬性

1.1根據ID定位

假設要操作的Web元素定義如下:

這裡有個屬性是id="su",那麼我們可以根據id進行元素定位:

element = driver.find_element_by_id("su")

1.2根據NAME

這裡有個屬性是name="wd",那麼我們可以根據name進行元素定位:

element = driver.find_element_by_name("wd")

1.3根據LinkText

如果一個超鏈接元素,沒有id和name屬性,鏈接文本信息是唯一的:

那麼我們可以根據link_text進行定位:

element = driver.find_element_by_link_text(

"貼吧")

1.4根據PartialLinkText

我們可以做超鏈接字符串的部分匹配:

超鏈接字符串為:Python(計算機程序設計語言)_百度百科

我們查找時進行部分匹配:在當前頁面查找超鏈接字符串包含“_百度百科”的元素

ele = driver.find_element_by_partial_link_text("_百度百科")

ele.click()

1.5根據class Name

每個元素在定義時有class屬性,相當於把這個元素劃歸到某類中:

則可以根據類別名稱進行定位:

ele = driver.find_element_by_class_name("s_ipt")

*如果元素定義時class值中間帶空格,相當於這個元素同時屬於多個類別:

按照整個class的值定位會失敗,可以根據部分類名定位:

ele = driver.find_element_by_class_name("s_ipt_wr")

1.6根據tag Name

每個元素在HTML文件中,都有個標籤名稱,如input,div,form,span等:

若元素沒有id,name這些易於定義的屬性,也可以根據標籤名稱input進行定位:

ele = driver.find_element_by_tag_name("input")

*通常一個頁面上同類型的標籤會不止一個,需要進行過濾。


更多內容請參考:

自動化測試:Selenium的元素定位方式


分享到:


相關文章: