当前位置: 首页 > backend >正文

[三分钟]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("[文件路径]");
http://www.xdnf.cn/news/2829.html

相关文章:

  • 基于蓝牙Beacon人员导航方案
  • 【Linux】第十二章 安装和更新软件包
  • 第七章:Server/Client Communication
  • 增量抽取的场景下,周期快照表最新分区的数据是如何生成?
  • 安卓开发学习随记
  • OpenCV 图形API(69)图像与通道拼接函数------将一个 GMat 类型的对象转换为另一个具有不同深度GMat对象函数convertTo()
  • vue3使其另一台服务器上的x.html,实现x.html调用中的函数,并向其传递数据。
  • kylin v10 + argo + ascend 310p多机多卡 pytorch distributed 训练
  • JavaWeb学习打卡-Day4-会话技术、JWT、Filter、Interceptor
  • WPF之Label控件详解
  • GoLand包的爆红问题解决
  • Coupang火箭计划深度攻略:eBay卖家突破韩国市场的三维数据作战模型
  • 面试算法高频08-动态规划-03
  • InitializingBean接口和@PostConstruct-笔记
  • Spring系列四:AOP切面编程 第二部分
  • EasyGBS国标GB28181设备管理软件打造园区安防高效解决方案
  • 【C++】类和对象(4)
  • 开源CMS系统的SEO优化功能主要依赖哪些插件?
  • java 和 C#操作数据库对比
  • Web技术与Apache网站部署
  • 知识付费平台:野兔YeTu
  • 静态库与动态库简介
  • CAD2008无法完成激活注册问题
  • LINE FRIENDS 正式与 Walrus 合作,全新 AI 驱动的游戏即将上线
  • maven私服配置
  • 如何创建并使用极狐GitLab 受保护分支?
  • 明远智睿SSD2351开发板:开启工业控制新征程
  • Linux[开发工具]
  • 短视频矩阵系统贴牌批量剪辑功能开发,支持OEM
  • 马井堂-大语言模型对教学的应用分析