上一篇介绍了自己对selenium的理解以及测试环境的搭建~这篇主要介绍一下如何定位我们的页面元素。我们以火狐浏览器为例,其中火狐浏览器的版本采用较低的35.0.1版本,大家可以从网站上下载相应的版本。
我们在对页面中元素进行定位之前,要先对浏览器进行操作:
1 public class SearchTest { 2 public static void main(String[] args) { 3 // 1、打开浏览器——创建浏览器驱动 4 WebDriver driver = new FirefoxDriver(); 5 // 2、智能等待10秒 6 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 7 // 3、窗口最大化 8 driver.manage().window().maximize(); 9 // 4、打开网页 10 driver.get("www.baidu.com"); 11 // 5、定位界面元素,并对元素进行操作——输入内容sendKeys(),点击按钮click() 12 driver.findElement(By.className("s_ipt")).sendKeys("李宗盛"); 13 driver.findElement(By.id("su")).click(); 14 // 6、关闭浏览器 15 driver.close(); 16 // 7、关闭驱动 17 driver.quit(); 18 } 19 }
其中,第五步的定位元素有八种方式:
- className:通过元素的class定位,findElement()方法表示查找元素,By.className()表示通过类名来定位界面上的输入框,sendKeys()表示向输入框中填入“李宗盛” driver.findElement(By.className("spread")).sendKeys("李宗盛");
- id:driver.findElement(By.id("username")).sendKeys("admin");
- linkText:driver.findElement(By.linkText("淘宝网")).click();
- partialLinkText:driver.findElement(By.partialLinkText("淘")).click(); 当连接文本比较长,只写部分也可以
- name:driver.findElement(By.name("username")).sendKeys("admin");
- tagName:driver.findElement(By.tagName("a")).click(); 当页面中的标签名唯一才可以使用
- cssSelector:driver.findElement(By.cssSelector("input[type='button']")).click(); 定位到元素后,直接右键——选择css,复制css路径
- xpath:driver.findElement(By.xpath("//input[@value='查询']")).click(); 一般来说,其他方式定位不到的时候,就可以用这种方式定位;但是如果所有页面元素都用这种方式定位,那么代码的可读性就会比较差
这是元素的定位方式,代码中其他部分,是公共部分。我们类比较多的时候,就可以把这部分公共代码抽取出来。
下一部分,介绍一些页面的高级操作