selenium元素定位方法(單元素操作)

在做WEB自動化時,最重要的的就是操作頁面上的元素,這就要求我們必修找到這些元素,然後才能操作這些元素。工具或代碼無法像我們測試人員一樣用肉眼來分辨頁面上的元素。那麼我們怎麼來定位這些元素呢?

selenium webdriver提供瞭如下八種元素定位的方法:

id,  name,  class name,  tag name,link text,  partial link text,  xpath,  css selector

舉例睿江雲登錄頁面,賬號框及註冊調整下的元素信息

賬號輸入框:    <input _ngcontent-c1="" class="login-input ng-untouched ng-pristine ng-valid" placeholder="請輸入賬號(手機號碼/電子郵箱)" type="text" id="email">註冊標籤:    <a _ngcontent-c6="" href="#/register" routerlink="/register" name="register">立即註冊</a>

1. id定位:find_element_by_id(“id值”)

如賬號輸入框下的id值爲email:    find_element_by_id('email').clear() #清空賬號框下的text    find_element_by_id('email').send_keys("[email protected]") #輸入賬號值爲[email protected]

2. name定位:find_element_by_name(“name值”)

也有元素沒有id或不唯一,可用如註冊標籤下的name值對應register:    find_element_by_name('register').click() #點擊立即註冊標籤操作

3. class定位:元素的類名,find_element_by_class_name(“class值”)

如賬號輸入框下的class值爲login-input ng-untouched ng-pristine ng-valid:    find_element_by_class_name('login-input ng-untouched ng-pristine ng-valid').send_keys("[email protected]") #輸入賬號值爲[email protected]

4. tag name定位:find_element_by_tag_name(“tag值”)

拿註冊爲例:    find_element_by_tag_name("a").cilck() #點擊立即註冊標籤操作HTML的本質就是通過tag來定義實現不同的功能,每一個元素本質上也是一個tag。tag往往用來定義一類功能,所以通過tag識別某個元素的概率很低。如頁面存在大量的<div>,<input>,<a>等tag。

5. link text定位:find_element_by_link_text(“text值”)

link專門用來定位文本鏈接。也是拿註冊爲例a標籤的元素爲立即註冊    find_element_by_link_text("立即註冊").cilck() #點擊立即註冊標籤操作

6. partial link text定位:find_element_by_partial_link_text(”text值”)

partial link text是對link text的補充,有些文本鏈接會比較長,此時可以取部分文本進行定位。    find_element_by_partial_link_text("立即註冊").cilck() #點擊立即註冊標籤操作

7. css selector 定位:find_element_by_css_selector(“css值”)

可以理解爲css 選擇器,我們可以利用元素的任意css元素來進行定位,比如在元素的class屬性爲多個值時,可以使用 tagname+class的方式來定位如賬號輸入框爲input,class爲:login-input ng-untouched ng-pristine ng-valid。    find_element_by_css_selector("input.login-input.ng-untouched.ng-pristine.ng-valid")

8. xpath定位:find_element_by_xpath(“xpath值”)

  1. 有多種定位策略,用FirePath插件自動生成的涵蓋以下幾種方式

  2. 1)絕對路徑定位:

  3.    對於沒有idnameclassname不好定位的,這也是最常用的,因爲可以通過FirefoxFirePath插件可以方便的獲取到xpath

  4. 2)利用元素屬性定位:

  5.    find_element_by_xpath(".//*[@id='email']").send_keys("[email protected]") ,這裏是用的id,也可以用元素其他能夠唯一標識的屬性,不侷限於idnameclass這些;*代表的是標籤名,不指定時就可以用*代替

  6. 3)層級與屬性結合:下圖


9931.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章