[三分钟]web自动化测试(三):selenium自动化测试常用函数(下)
文章目录
- 4.等待
- 4.1 强制等待
- 4.2 隐式等待
- 4.3 显式等待
- 5.浏览器导航
- 5.1 浏览器的前进、后退、刷新
- 5.2 打开网站
- 6. 弹窗
- 6.1 确认和取消
- 6.2 输入信息
- 7. 文件上传
4.等待
如果页面渲染的速度赶不上代码执行的速度,可能会因为渲染过慢出现自动化误报的问题。
此时可以使用selenium中提供的三种等待方法:
4.1 强制等待
Thread.sleep()
优点:使用简单,适合调试的时候
缺点:影响运行效率,浪费大量时间
4.2 隐式等待
隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执行,直到超时没找到元素才会报错。
方法名 | 参数 | 作用域 |
---|---|---|
implicitlyWait() | Duration类中提供的毫秒、秒、分钟等方法 | 整个脚本的所有元素 |
举例:
//隐式等待1000毫秒
driver.manage().timeouts().implicitlyWait(Duration.ofMillis(1000));
//隐式等待5秒
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
优点:智能等待,作用于全局
缺点:只能作用于查找元素,且每次查找都会等待
4.3 显式等待
显式等待也是⼀种智能等待,在指定时间范围内只要满足操作的条件就会继续执行后续代码。
new WebDriverWait(driver, Duration.ofSeconds(3)).until($express)
// $express:selenium.support.ui.ExpectedConditions包下的ExpectedConditions类中的方法。
方法 | 作用 |
---|---|
elementToBeClickable(By locator) | 检查点击 |
textToBe(Bylocator,String str) | 检查元素 |
presenceOfElementLocated(Bylocator) | 检查页面的 DOM 上是否存在元素。 |
urlToBe(java.lang.String url) | 检查当前页面的 URL 是⼀个特定的 URL。 |
示例:
// 检查元素是否可以点击
WebDriverWait foo = new WebDriverWait(driver, Duration.ofSeconds(3))
foo.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#id")));
优点:可以自定义显式等待的条件,操作灵活
缺点:写法复杂
5.浏览器导航
浏览器导航里的前进,后退,刷新功能,我们无法通过定位元素来操作它们,这该如何解决?
selenium为我们提供了以下方法:
5.1 浏览器的前进、后退、刷新
// 前进
driver.navigate().forward();
// 后退
driver.navigate().back();
// 刷新
driver.navigate().refresh();
5.2 打开网站
// ⽅法一
driver.navigate().to("https://selenium.dev");
// ⽅法二
driver.get("https://selenium.dev");
6. 弹窗
弹窗是在页面是找不到任何元素的,不能通过元素定位来操作,这种情况如何处理?
使用selenium提供的Alert接口
6.1 确认和取消
Alert alert = driver.switchTo.alert();
//确认
alert.accept()
//取消
alert.dismiss()
6.2 输入信息
Alert alert = driver.switchTo.alert();
alert.sendKeys("hello"); // 在输入框中输入hello
7. 文件上传
可以使用sendkeys来上传指定路径的文件
WebElement ele = driver.findElement(By.cssSelector("body > div > div >
input[type=file]"));
ele.sendKeys("[文件路径]");