selenium-元素定位
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-元素定位