Selenium自动化一般需要几个步骤操作:定位元素,获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动化出测试报告。
一、WebDriver API提供了8种元素定位的方法:
- id
- name
- class name
- link text
- Xpath
- CSS selector
- tag name
- partial link text
- 定位Web页面上的元素可以通过元素区别于其他元素的一些属性:id,name,class name,tag name等;
- 可以通过位置属性:XPath和CSS,提供了以标签名为层级关系的定位方式;
- XPath和CSS同样提供了通过相关元素来查找最终元素的方式;
import org.openqa.selenium.By;
...
findElement(By.id()) //方法通过 id 属性定位来元素
findElement(By.name()) //通过 name 属性来定位元素
findElement(By.className()) //通过 class 属性来定位元素
findElement(By.tagName()) //通过元素的 tag name 来定位元素
findElement(By.linkText()) //法通过元素标签对之间的文本信息来定位元素
findElement(By.partialLinkText()) //通过元素标签对之间的部分文本信息来定位元素
findElement(By.xpath()) //使用 XPath 语言来定位元素
findElement(By.cssSelector()) //用于 CSS 语言定位元素
(一)Id定位
HTML规定id属性在HTML文档中必须唯一,WebDriver提供的id定位方法就是通过元素id属性查找元素
通过id定位百度输入框与百度搜索按钮,如下
driver.findElement(By.id("kw")).sendKeys("XXX");
driver.findElement(By.id("su")).click();
(二)Name定位
HTML规定name来指定元素的名称,name的属性值,在当前页面可以不唯一。
通过name定位百度输入框
driver.findElement(By.name("wd")).sendKeys("XXX");
(三)class定位
HTML规定class来指定元素的类名,用法和id,name类型
通过class属性定位百度输入框和搜索按钮
driver.findElement(By.className("s_ipt")).sendKeys("XXX");
driver.findElement(By.className("bg s_btn")).click();
(四)tag定位
HTML的本质就是通过tag来定义实现不同的功能,每一个元素本质上也是一个tag。因为一个tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。例如我们打开任意一个页面,查看前端都会发现大量的<div>、<input>、<a>等tag,所以很难通过tag name去区分不同的元素