1. 程式人生 > 其它 >【面試-selenium】Selenium 元素定位方式

【面試-selenium】Selenium 元素定位方式

1.ID定位

可以根據元素的id來定位屬性,id是當前整個HTML頁面中唯一的,所以可以通過id屬性來唯一定位一個元素,是首選的元素定位方式。(動態ID不做考慮)

實際應用:

2.name定位

根據元素的name來定位屬性,但name並不是唯一的。

3.class name定位

根據Class定位屬性,主要是用來元素進行分組,並對這一級元素設定相同的樣式。所以class屬性在當前html頁面當中,也是不能唯一定位到一個元素的,class的屬性只有一個值。

注意:By.className 這個方法的引數只能是一個class值,列如:class屬性有空格隔開兩個class的值時,只能選取其中一個進行定位。

4.tag name定位

通過元素的標籤名來定位元素,如:input標籤、span標籤,明顯不是唯一的

link_text和partial_link_text是作用於連結a標籤的,link_text用於全部匹配文字值,partial_link_text用於部分匹配文字值。

6.css定位

通過組合的方式進行定位,和XPATH定位方式基本相同。

7.xpath定位 [常用]

xpath基本定位語法:

表示式 說明
/ 絕對定位,從根節點選取
// 相對定位,從匹配選擇的當前節點選擇文件中的節點,不考慮位置
.
選取當前節點
.. 選取當前節點的父節點
@ 選取屬性,@class="xxx" @id="xxx",屬性放在中括號 [] 中
* 萬用字元,匹配所有 //*
@* 萬用字元,匹配所有屬性 //*[@*="hello"]

xpath定位分為絕對定位和相對定位

絕對定位 (/):嚴格按照路徑、同級元素的位置來定位,缺點:頁面一動,基本崩潰。

例如:/html/body/div[2]/div/form/div[1]/input  #div[2]:2表示div同級目錄下的第二個div

相對定位(//):有一個參照物,不考慮路徑和位置,只考慮:有還是沒有。以//開頭://標籤名[@屬性名稱=值]

例如:

1、//input[@placeholder='選擇日期']  #標籤名為input並且placeholder屬性值為“選擇日期“

2、and or 用法

//input[@placeholder='選擇日期' and @type='text']

3、包含  //標籤名[contains(@屬性值,被包含的值)]

//input[contains(@class,"username") and @name="phone"]

4、文字內容定位  text()=值

//a[text()="首頁"]

//a[contains(text(),"首頁")]

5、層級定位

//div[@id="u1"]//a[@name="tj_login"]

6、軸定位

軸運算:
ancestor:祖先結點 包括父
parent:父結點 給g
preceding: 當前元素節點標籤之前的所有結點。(html頁面先後順序)
preceding-sibling: 當前元素節點標籤之前的所有兄弟結點
following: 當前元素節點標籤之後的所有結點。(html頁面先後順序)
following-sibling:當前元素節點標籤之後的所有兄弟結點

使用語法:
/軸名稱::節點名稱[@屬性=值]
例:

//div//table//td//preceding::td

//div[@class='header-title'][div[p]]/following-sibling::button

專案實際應用舉例: