selenium UI元素定位

2021-06-16 15:18:43 字數 1672 閱讀 1810

1.使用id屬性定位元素

示例html如下:

如果在當前頁面,該id屬性是獨一無二的,則使用id定位效果最好

driver.findelement(by.id(username));

2.使用name屬性定位元素

driver.findelement(by.name("login"));

如果同乙個頁面中,有多個元素的name屬性都一樣,那直接用name定位時,缺省會選擇第乙個元素

3.使用text屬性定位link

示例html如下:

...

sign in to modify your account details.

...

driver.findelement(by.linktext("sign in"));

如果有多個屬性為「sign in」的link鏈結,則預設選擇第乙個link

另外一種方法,則可以通過部分匹配的方式來定位,如下面的定位器,可以查詢所有包含有「sign」的link鏈結

driver.findelement(by.partiallinktext("sign"));

4.使用css屬性定位元素

示例html元素如下:

*** download: foobar.***

*** player

...

當id、name缺失或較難定位時,我們可以選用css方法來定位元素

driver.findelement(by.cssselector("formfield.disabled"));

class中間有空格的話,就用.來代替

5.使用xpath屬性定位元素

通過xpath定位由於定位速度比較慢,更重要的是,如果前端頁面變動比較頻繁,xpath也需要經常檢查更新,所以一般xpaht使用的較少,如果使用,也多用相對xpath定位

示例html如下:

*** download: foobar.***

*** player

...

driver.findelement(by.xpath("//input[contains(@class='required') and type='text']"));

也可以寫成這樣:

//table/tr[2]/td/input

//input[@id='item2_quantity']

(//table[@name='cart']//input)[2]

//input[contains(@class,'required')]

//input[contains(@class,'required') and type='text']

6.使用tagname定位元素

使用tagname定位元素用的比較少,如果頁面中只有乙個iframe,需要切換到iframe裡面去操作元素時,可以直接使用tagname。

driver.findelement(by.tagname("iframe"));

元素定位 Cypress 元素定位

cypress含有多種定位方式我們無需擔心因為定位導致測試失敗,cypress有獨一無二的定位策略能使你擺脫元素定位的噩夢。cypress專有選擇器 舉例 submitsubmitsubmit獲取元素方法 cy.get data cy submit click cy.get data test su...

元素定位 14元素定位position

1 定義 position 屬性指定了元素的定位型別。這個屬性定義建立元素布局所用的定位機制。任何元素都可以定位,不過絕對或固定元素會生成乙個塊級框,而不論該元素本身是什麼型別。相對定位元素會相對於它在正常流中的預設位置偏移。元素可以使用的頂部,底部,左側和右側屬性定位。然而,這些屬性無法工作,除非...

Selenium 元素定位

ui自動化中元素的定位是最最基本,但也是最讓人頭痛的地方。控制項的動態載入,屬性的動態生成抑或因為開發的懶而造成控制項的識別問題總是自動化測試的噩夢。webdriver作為主流的網頁測試工具提供了非常豐富的識別控制項的方法。這次在寫自動化庫的時候也遇到各種定位問題,著實抓狂了一陣,但最終都解決了。雖...