寫在前面:本文主要介紹了selenium工具中的幾種元素定位方法。(僅在Java中測試過)
1、By.id()
測試源碼:
<input id="aa" name="bb" class="cc" value="dd" >
定位代碼:
WebElement element = driver.findElement(By.id("aa"));
2、By.name()
定位代碼:
WebElement element = driver.findElement(By.name("bb"));
3、By.linkText()
本方法就是通過超文本鏈接上的文字信息來定位元素,通俗點就是找到頁面上顯示的文字,當然如果文字重了就不建議使用這種方法了。
測試源碼:
<a>主頁</a>
定位代碼:
WebElement element = driver.findElement(By.linkText("主頁"));
4、By.tagName()
這個方法搜索到的元素通常不止一個,所以建議結合findElements方法來使用
例如對一個table的行
定位代碼:
List<WebElement> e_row1 = table.findElements(By.tagName("tr"));(定位了table中的所有行)
5、By.xpath()
此方法雖然很強大,但是兼容性較差,若是多瀏覽器去跑代碼,就不建議使用它了。
6、By.cssSelector()
此方法很強大,而且兼容性很強。其語法規則可以參照css的標準。
定位代碼:
driver.findElement(By.cssSelector("#aa")); //id=aa
driver.findElement(By.cssSelector(".bb")); //class=bb
7、By.className()
由於類名重複較多,因此此方法定位的位置較多,所以不推薦使用。
定位代碼:
WebElement element = driver.findElement(By.className("cc"));
注:有時候會出現使用各種方法定位不準確,這時候可以考慮通過座標來定位(不得已而爲之)。可參考我上一篇總結。