1. 程式人生 > >selenium-元素定位

selenium-元素定位

button In 功能 程序員 很多 lin 超鏈接 path att

selenium元素的定位方式主要有八種:

要保證用此定位方法定位到的元素是唯一的。

1、By_id

2、By_name

3、By_className(元素的css樣式)

4、By_tagName(元素的標簽名稱)

5、By_linkText (超文本鏈接上的文字信息)

6、By_particalLinkText (超文本鏈接上的部分文字信息)

7、By_xpath (XPath是XML Path的簡稱,由於HTML文檔本身就是一個標準的XML頁面,所以我們可以使用XPath的語法來定位頁面元素。絕對路徑/相對路徑)

8、By_cssSelector

cssSelector這種元素定位方式跟xpath比較類似,但執行速度較快,而且各種瀏覽器對它的支持都相當到位,所以功能也是蠻強大的。

下面是一些常見的cssSelector的定位方式:

定位id為flrs的div元素,可以寫成:#flrs 註:相當於xpath語法的//div[@id=’flrs’]

定位id為flrs下的a元素,可以寫成 #flrs > a 註:相當於xpath語法的//div[@id=’flrs’]/a

定位id為flrs下的href屬性值為/forexample/about.html的元素,可以寫成: #flrs > a[href=”/forexample/about.html”]

eg:driver.findElement(By.cssSelector("button.btn.btn_big.btn_submit"))

如果需要指定多個屬性值時,可以逐一加在後面,如#flrs > input[name=”username”][type=”text”]。

此外,cssSelector還有一些高級用法,如果熟練後可以更加方便地幫助我們定位元素,如我們可以利用^用於匹配一個前綴,$用於匹配一個後綴,*用於匹配任意字符。例如:

匹配一個有id屬性,並且id屬性是以”id_prefix_”開頭的超鏈接元素:a[id^=‘id_prefix_‘]

匹配一個有id屬性,並且id屬性是以”_id_sufix”結尾的超鏈接元素:a[id$=‘_id_sufix‘]

匹配一個有id屬性,並且id屬性中包含”id_pattern”字符的超鏈接元素:a[id*=‘id_pattern‘]

最後再總結一下,各種方式在選擇的時候應該怎麽選擇:

1. 當頁面元素有id屬性時,最好盡量用id來定位。但由於現實項目中很多程序員其實寫的代碼並不規範,會缺少很多標準屬性,這時就只有選擇其他定位方法。

2. xpath很強悍,但定位性能不是很好,所以還是盡量少用。如果確實少數元素不好定位,可以選擇xpath或cssSelector。

3. 當要定位一組元素相同元素時,可以考慮用tagName或name。

4. 當有鏈接需要定位時,可以考慮linkText或partialLinkText方式。

selenium-元素定位