自动化测试②
目录
操作:
3.4 关闭窗口
4.等待
1)强制等待:
2)隐式等待:
3)显示等待:
补充:自动化出现NoSuchElement错误
5.浏览器导航
1)打开网站
2)浏览器的前进、后退、刷新
6.弹窗
7.文件上传
8.无头模式(默认为有头模式)
9.页面加载策略
操作:
3.4 关闭窗口
driver.close() 注:窗口关闭后driver要重新定义。
4.等待
避免因为渲染过慢出现的自动化误报问题。
1)强制等待:
Thread.sleep():使用简单,但是影响运行速率。主要用于调试。
2)隐式等待:
driver.manager().timeouts().implicitlywait(Duration.of...())
在查找元素(.findElement)时,在指定时间内不断查找元素,若找到继续执行,超时未找到报错。
3)显示等待:
new WebDriverWait(driver, Duration.ofSeconds(3)).until($experss)
$express: 涉及到selenium.support.ui.ExpectedConditions包下的ExpectedCondition类
在指定的时间范围内,只要满足操作的条件就会继续执行代码。
ExpectedConditions预定义的方法:
elementToBeClickable(By location):用于检查元素存在且启用,可被点击。
textToBe(Bylocator,String str):等待页面上出现指定的文本内容(精确匹配)
presenceOfElementLocationed(Bylocator):检查页面Dom上是否存在该元素。(主要用于页面跳转后判断某种标志是否出现)
urlToBe(java.long.String url):检查当前页面url为特定的URL。(用于验证页面是否已跳转到预期的页面)
补充:自动化出现NoSuchElement错误
一、在报错代码前添加Thread.sleep()
二、执行自动化,在自动化打开的页面里打开前端开发者工具,手动检查元素是否不存在
1)自动化打开的页面确定不存在该元素
①手动打开的页面确定不存在该元素
②元素为动态元素 => 先定位动态元素的前一级元素,再增加要定位的元素标签
2)自动化打开存在该元素,页面渲染速度慢 => 添加等待
注:不要混合隐式等待和显示等待,可能导致不可预测的等待时间。
5.浏览器导航
1)打开网站
1.driver.navigate().to("网站地址")
2.driver.get("网站地址")
2)浏览器的前进、后退、刷新
driver.navigate().forward()
driver.navigate().back()
driver.navigete().refresh()
6.弹窗
1.警告弹窗 2.确认弹窗 3.提示弹窗
弹窗 => 不能通过元素进行定位
弹窗的操作:
1.切换弹窗
Alert alert = driver.switchTo.alert();
2.点击确认
alert.accept();
3.点击取消
alert.dismiss();
4.输入文本信息
alert.sendKeys(" ");
7.文件上传
点击文件上传的场景不会弹出系统窗口,进行文件选择。
selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素。
使用.sendKeys(" ")来上传指定路径的文件,达到的效果是一样的。
8.无头模式(默认为有头模式)
//设置无头模式 options.addArgument("-headless");
工作中,运行自动化不会人工一直盯着自动化执行效果,一般都设置无头模式,通过自动化执行的结果来分析
9.页面加载策略
optios.setPageLoadLoadStrategy(PageLoadStrategy. )
normal 等待整个页面加载完成,包括文件、css、js
eager 等待整个dom树加载完成,只要html完成加载和解析完成,放弃等待图片、样式的加载。
none 等待html下载完成,哪怕还没开始解析