.id
findElement(By.id())
.name
findElement(By.name())
.class name
findElement(By.className())
.tag name
在HTML中,tag往往用来定义一类功能,所以通过tag识别某个元素很难,因为前端代码中有大量的div input a标签。
findElement(By.tagName())
.link text
通过元素标签对之间的文本信息定位元素。
findElement(By.linkText())
.partial link text
通过元素标签对之间的部分文本信息定位元素。
findElement(By.partialLinkText())
.xpath
Xpath是XML文档的一种定位元素语言,而HTML可以看做是XML的一种实现,所以Selenium可以使用Xpath在Web应用中定位元素。
findElement(By.xpath())
//绝对路径定位,百度首页的新闻链接
driver.findElement(By.xpath("/html/body/div[2]/div/div/div[3]/a")).click();
//元素属性定位,白熊登录页面
driver.findElement(By.xpath("//button[@class='login']")).click();
//不指定标签名,可以用*代替
driver.findElement(By.xpath("//*[@class='login']")).click();
//层级和属性结合,白熊搜索
driver.findElement(By.xpath("//div[@class='clearfix']/input")).sendKeys("selenium");
//使用逻辑运算符,白熊登录页面
driver.findElement(By.xpath("//button[@class='login' and @onclick='comm.includeLogin(true)']")).click();
.cssSelector
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML、XML的表型形式。CSS使用选择器来为页面元素绑定属性。这些选择器可以作为Selenium定位元素的另一种策略。
关于CSS还是了解的太少,今天还把element>element与element element弄混了,具体可以在http://www.w3school.com.cn/cssref/css_selectors.asp 这里了解更多
findElement(By.cssSelector())
//.class class选择器,选择class=""的所有元素,类似于Xpath的.className
driver.findElement(By.cssSelector(".login")).click();
//#id id选择器,选择id=""的所有元素,类似于Xpath的.id
driver.findElement(By.cssSelector("#kw")).sendKeys("selenium");
//通过属性定位
driver.findElement(By.cssSelector("button[class='login']")).click();
//组合定位
driver.findElement(By.cssSelector("div.themelib div:nth-child(1) a:nth-child(2) h2")).click();
2.定位一组元素
//8种方法和定位单个元素一样,只是单词element后面需要加s
list<webElement> allcheckboxes = new list<webElement>;
allcheckboxes = driver.findElements(By.cssSelector("input[type=checkbox]"));
int number = allcheckboxes.size();//获取元素组中元素的数量
allcheckboxes.get(number-1).click();//指定元素组的某一个元素,并进行操作
driver.navigate.refresh();//刷新页面,去掉已勾选的项