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

[三分钟]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("[文件路径]");

相关文章:

  • 突破JVM边界:类加载三重门与栈帧的生存法则
  • x-cmd install | Orbiton:极简至上的终端文本编辑器与轻量级 IDE
  • wps批注线条怎么取消去掉wps批注后有竖线
  • idea启动springboot方式及web调用
  • 数据库基础与核心操作:从概念到实战的全面解析
  • Linux进程7-signal信号处理方式验证、可重入函数举例、信号集函数验证、信号集阻塞验证
  • Github两种鉴权模式PAT与SSH
  • 【Shell 脚本入门】轻松上手的实战指南
  • DIFY教程第三弹:构建一个智能生成图片的Agent
  • 【OSG学习笔记】Day 13: 事件处理——响应键盘与鼠标
  • 高压直流输电MATLAB/simulink仿真模型+说明文档
  • UDP协议详解+代码演示
  • Nginx支持HTTP2/HTTP3的并用CURL测试
  • 微信小程序连续多个特殊字符自动换行解决方法
  • 在 Ubuntu 24.04 LTS 一台机子上同时部署Dify 1.3.1 和 RAGflow 0.18.0
  • 系统架构-软件可靠性
  • 如何删除此电脑上的迅雷下载、WPS云盘、百度网盘
  • yolov8+kalman 实现目标跟踪统计人流量
  • Spring的BeanFactory和FactoryBean的区别
  • Hibernate-Core (CVE-2020-25638)
  • 日中友好议员联盟代表团访问中国人民对外友好协会
  • 气温“过山车”现象未来或更频繁且更剧烈
  • 四川落马厅官周海琦受审,1000多人接受警示教育
  • 又一名90后干部被查,已有多人倒在乡镇领导岗位上
  • AI翻译技术已走向大规模商用,应用场景覆盖多个关键领域
  • 美联储官员:若特朗普高额关税致失业率飙升,将支持降息