id选择器
//java
driver.findElement(By.id("divId"));
<!--html-->
<div id="divId"></div>
name选择器
//java
driver.findElement(By.name("divName"));
<!--html-->
<div name="divName"></div>
linkText选择器
//java
driver.findElement(By.linkText("百度a"));
<!--html-->
<a href="https://www.baidu.com">百度a</a>
partialLink选择器
跟上面的linkText很相似,不过partialLink可以匹配部分链接文字
//java
driver.findElement(By.linkText("百"));
driver.findElement(By.linkText("度"));
driver.findElement(By.linkText("度a"));
//三个返回的结果是一样的
tag选择器
//java
driver.findElement(By.TagName("div"));
<!--html-->
<div></div>
class选择器
//java
driver.findElement(By.className("class1"));
driver.findElement(By.className("class2"));
//注意这里是findElements多个s
//此方法可以将所有class1都查询出来,返回一个List<WebElement>,会将下面两个div都返回。
driver.findElements(By.className("class1"));
<!--html-->
<div class="class1"></div>
<div class="class1 class2"></div>
css选择器
有好几种写法
//java
driver.findElement(By.cssSelector("#divId"));
driver.findElement(By.cssSelector(".class1"));
driver.findElement(By.cssSelector("[name=divName]"));
driver.findElement(By.cssSelector("div"));
driver.findElement(By.cssSelector("html > body > div > a"));
如果你熟悉css样式的写法的话,会对上面的内容比较清楚。
xpath选择器
这个比较复杂,但是贼灵活
//java
driver.findElement(By.xpath("//*[@id=‘divId‘]"))
driver.findElement(By.xpath("//*[@name=‘divName‘]"))
driver.findElement(By.xpath("//input[@class=‘class1‘]"))
driver.findElement(By.xpath("/html/body/form/span/input"))
driver.findElement(By.xpath("//span[@class=‘class1‘]/input"))
driver.findElement(By.xpath("//form[@id=‘form‘]/span/input"))
driver.findElement(By.xpath("//input[@id=‘divId‘ and @name=‘divName‘]"))
以上api返回的都是一个元素,即:WebElement。如果匹配到多个元素那么默认返回第一个。想要获取多个元素,需要使用:driver.findElements(By....);此方法返回的是List<WebElement>。
原文:https://www.cnblogs.com/Eastry/p/12887530.html