写在前面:本文主要介绍了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"));
注:有时候会出现使用各种方法定位不准确,这时候可以考虑通过坐标来定位(不得已而为之)。可参考我上一篇总结。