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

测试开发话题10---自动化测试常用函数(2)

 🔥个人主页:寻星探路

🎬作者简介:Java研发方向学习者

📖个人专栏: 、《《测试开发漫谈》《JavaEE 初阶启程记》

⭐️人生格言:没有人生来就会编程,但我生来倔强!!!



目录

一、等待

1、强制等待

2、隐式等待

3、显示等待

二、浏览器导航

三、弹窗

1、警告弹窗 + 确认弹窗

2、提示弹窗

四、文件上传

五、浏览器参数设置


一、等待

        通常代码执行的速度比页面渲染的速度要快,如果避免因为渲染过慢出现的自动化误报的问题呢?可以使用selenium中提供的三种等待方法:

1、强制等待

Thread.sleep ()

优点:使用简单,调试的时候比较有效

缺点:影响运行效率,浪费大量的时间

2、隐式等待

        隐式等待是一种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执行,直到超时没找到元素才会报错。

implicitlyWait () 参数:Duration类中提供的毫秒、秒、分钟等方法

示例:

 //隐式等待1000毫秒 driver.manage().timeouts().implicitlyWait(Duration.ofMillis(1000));//隐式等待5秒 driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

        隐式等待作用域是整个脚本的所有元素。即只要driver对象没有被释放掉(driver.quit()),隐式等待就一直生效。

优点:智能等待,作用于全局

3、显示等待

        显示等待也是一种智能等待,在指定超时时间范围内只要满足操作的条件就会继续执行后续代码 new WebDriverWait(driver, Duration.ofSeconds(3)).until($express)

$press:涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类

返回值:boolean

示例:

 WebDriverWait foo = new WebDriverWait(driver, Duration.ofSeconds(3))foo.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#id")));

ExpectedConditions预定义方法的一些示例:

• elementToBeClickable(By locator)‒用于检查元素的期望是可见的并已启用,以便您可以单击它

• textToBe (Bylocator , String str)-检查元素。

• presenceOfElementLocated(Bylocator)‒检查页面的DOM上是否存在元素。

• urlToBe(java.lang.String url)‒检查当前页面的URL是一个特定的URL。

 WebDriverWait wait = new WebDriverWait(driver,Duration.ofSeconds(10));boolean ispass = wait.until(ExpectedConditions.textToBe(By.cssSelector("#s-topleft > a:nth-child(1)"), "新闻"));if(ispass){System.out.println("测试通过");}else {System.out.println("测试失败");}

优点:显示等待是智能等待,可以自定义显示等待的条件,操作灵活

缺点:写法复杂

隐式等待和显示等待一起使用效果如何呢?

测试⼀下:

 //隐式等待设置为5s,显⽰等待设置为10s,那么结果会是5+10=15s吗? SimpleDateFormat sim =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(sim.format(System.currentTimeMillis()));driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth child(1) > a > span.title-content"));WebDriverWait wait = new WebDriverWait(driver,Duration.ofSeconds(10));try{wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content")));}catch (Exception e){System.out.println("nosuelement!");}System.out.println(sim.format(System.currentTimeMillis()));

结果:重试多次,最终打印的等待时间有10s、11s....

结论:不要混合隐式和显式等待,可能会导致不可预测的等待时间。

二、浏览器导航

常见操作:

1)打开网站

// 更⻓的⽅法 
driver.navigate().to("https://selenium.dev");
// 简洁的⽅法
driver.get("https://selenium.dev");

2)浏览器的前进、后退、刷新

 driver.navigate().back();driver.navigate().forward();driver.navigate().refresh();

案例:百度首页测试在线工具 - 你的工具箱标签入口

三、弹窗

        弹窗是在页面是找不到任何元素的,这种情况怎么处理?使用selenium提供的Alert接口

1、警告弹窗 + 确认弹窗

 Alert alert = driver.switchTo.alert();//确认alert.accept()//取消alert.dismiss()

2、提示弹窗

 Alert alert = driver.switchTo.alert();alert.sendKeys("hello");alert.accept();alert.dismiss();

四、文件上传

点击文件上传的场景下会弹窗系统窗口,进行文件的选择。

selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素

但是可以使用sendkeys来上传指定路径的文件,达到的效果是一样的

 WebElement ele = driver.findElement(By.cssSelector("body > div > div > input[type=file]"));ele.sendKeys("D:\\selenium2html\\selenium2html\\upload.html");

五、浏览器参数设置

1)设置无头模式

2)设置浏览器加载策略

options.setPageLoadStrategy(PageLoadStrategy.NONE);

http://www.dtcms.com/a/568993.html

相关文章:

  • Auto CAD二次开发——镜像图形对象
  • 软考 关于23种设计模式
  • golang 网站开发 教程网站建设公司如何规避风险
  • 建设电子商务网站论文网站开发核心技术
  • nestjs集成grpc服务
  • Milvus:标量索引详解(十三)
  • 【仓颉纪元】仓颉学习深度实践:30 天从零基础到独立开发
  • RocketMQ【入门实践】
  • Harmony鸿蒙开发0基础入门到精通Day11--TypeScript篇
  • 网站做广告的好处软件定制开发平台
  • 从智能手表拆解看硬件与软件的魔法融合 -嵌入式开发
  • 【java基础语法】---- 综合训练
  • BKA-Transformer-LSTM多变量时间序列预测Matlab实现
  • 如何自己创造一个网站平台搬瓦工装WordPress
  • 数式Oinone亮相GOTC 2025开源集市,企业级产品化引擎冲击Gitee当日热门项目
  • 【产品研究】生物力学软件 SIMM 4.0 for Windows 用户手册总结
  • 更新公司网站内容需要山东住房和城乡建设局网站首页
  • Unity与Android原生交互开发入门篇 - 打开Android的设置
  • 如何查看Linux系统版本?
  • Python类和对象--生命周期方法(对象生命周期,内存管理机制-存储,垃圾回收)
  • PAIMON+STARROCKS 学习
  • *曲速引擎的核心思想
  • AI时代下医药项目管理效能提升与知识管理案例分享︱奥锐特药业研发中心主任庄守群
  • 路由器构建园区网
  • 陕西建设网站如何建立免费网站
  • 设计网站账号品牌策划公司广告语
  • 二十一、kubernetes 1.29 之 运维 03
  • 【论文精读】CMD:迈向高效视频生成的新范式
  • 技术实践 | 延趣游戏用户分层体系:基于TE系统实现精细化运营与流水增长
  • 【硬件SDK项目】uniapp框架设计与业务开发