目录
元素操作
1、查找页面元素
findElement()
参数: By类(通过什么方式来查找元素)
返回值:webElement,当元素可以在页面找到的情况下,程序正确退出当元素在页面找不到的情况下,程序执行报错。
findElements()
参数: By类(通过什么方式来查找元素)
返回值:List(webElement)
2、输入文本
sendKeys()
// 适用于文本字段和内容可编辑的元素 WebElement ele = driver.findElement(By.cssSelector("#kw")); ele.sendKeys("迪丽热巴"); // 简写 driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
3、点击 click()
4、提交 submit()
此处的提交是指通过回车键提交,selenium 官方不推荐使用 submit(),需要提交的场景我们都可以使用 click()。
我们把输入和点击/提交结合起来就可以完成简单的搜索功能。
driver.get("https://www.baidu.com");
driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
//driver.findElement(By.cssSelector("#su")).submit();
driver.findElement(By.cssSelector("#su")).click();
5、清除 clear()
将刚输入的数据进行清除,可以用来测试能否频繁输入。
6、获取文本 getText()
我们现在想要获取到百度第一条热搜的标题应该怎么做?
只需要以下代码就可以。
System.out.println(driver.findElement(
By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title")).getText());
但要注意的是,getText() 并不能随意获取页面中的文字,例如搜索框中的百度一下我们就获取不到,因为“谱写中国式现代化新篇章”是写在 span 中的文字,而“百度一下”是 input 标签中的 value 值。
如果要获取“百度一下”,那么就可以用我们接下来要讲的 getAttribute() 方法。
7、获取属性 getAttribute()
System.out.println(driver.findElement(By.cssSelector("#su")).getAttribute("value"));
System.out.println(driver.findElement(By.cssSelector("#su")).getAttribute("type"));
System.out.println(driver.findElement(By.cssSelector("#su")).getAttribute("id"));
System.out.println(driver.findElement(By.cssSelector("#su")).getAttribute("class"));
我们输出的结果正好与 input 中的属性一致。
窗口操作
1、窗口大小调整
maximize() != fullscreen(),fullscreen() 需要按 ESC 键退出。
// 创建一个线程用来放慢程序执行速度,便于我们观察
Thread t = new Thread();
t.sleep(2000);
// 窗口最大化
driver.manage().window().maximize();
t.sleep(2000);
// 全屏
driver.manage().window().fullscreen();
t.sleep(2000);
// 窗口最小化
driver.manage().window().minimize();
t.sleep(2000);
driver.quit();
2、窗口的切换
3、保存截图
要实现保存截图功能,首先我们需要引入下面的依赖。
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
在执行测试的过程中,可能会出现意想不到的错误,这时我们就需要对错误进行定位,定位错误我们可以去阅读代码,也可以查看截图根据截图推测那个步骤出现了异常。
Thread t = new Thread();
driver.get("https://www.baidu.com");
driver.findElement(By.cssSelector("#kw")).sendKeys("Java");
driver.findElement(By.cssSelector("#su")).click();
t.sleep(3000);
// 屏幕截图(截图是 png格式文件,所以下面 OutputType 我们选择 FILE
File srcFile = driver.getScreenshotAs(OutputType.FILE);
// 把屏幕截图放在指定路径下
String filename = "my.png";
FileUtils.copyFile(srcFile,new File(filename));
通过观察可以发现,这两张截图里面的内容是一样的。
注意:如果说两个截图的名称相同,那么最新的截图会直接覆盖之前的截图。