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

技术分享 | web自动化测试-文件上传与弹框处理

实战演示

文件上传

input 标签使用自动化上传,先定位到上传按钮,然后 send_keys 把路径作为值给传进去.

如图所示,是企业微信文件上传的页面 定位到标签为 input,type 为 file 的元素信息,然后使用 send_keys 把文件路径作为值给传进去。

  • Python 版本
driver.find_element(By.CSS_SELECTOR, "#js_upload_input")\.send_keys("./hogwarts.png")
  • Java 版本
driver.findElement(By.cssSelector("#js_upload_input"))\.sendKeys("./hogwarts.png");

弹窗处理

在页面操作中有时会遇到 JavaScript 所生成的 alert、confirm 以及 prompt 弹框,可以使用switch_to.alert()方法定位到。然后使用 text、accept、dismiss、send_keys 等方法进行操作。

  • switch_to.alert():获取当前页面上的警告框。

  • text:返回 alert、confirm、prompt 中的文字信息。

  • accept():接受现有警告框,即点击确定。

  • dismiss():解散现有警告框,即点击取消。

  • send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。

alter弹框

输入一段文本点击比如提交按钮,会弹出确认内容的弹框,这种场景可以使用下面的方式处理:

  • Python 版本
"""Alert弹窗获取文本与确认操作"""
driver.get("http://sahitest.com/demo/alertTest.htm")
driver.find_element_by_name("b1").click()
# 添加显示等待,等待弹框的出现
WebDriverWait(driver, 5, 0.5).until(EC.alert_is_present())
# 切换到弹框
alert = driver.switch_to.alert
# 打印弹框的文本
print(alert.text)
#点击确定
alert.accept()
# 点击取消或者关闭弹框
# alert.dismiss()
  • Java 版本
@Test
public void alertTest(){// Alert弹窗获取文本与确认操作driver.get("http://sahitest.com/demo/alertTest.htm");driver.findElement(By.name("b1")).click();// 添加显示等待,等待弹框的出现WebDriverWait wait = new WebDriverWait(driver, 5);wait.until(ExpectedConditions.alertIsPresent());// 切换到弹框Alert alert = driver.switchTo().alert();System.out.println(alert.getText());//点击确定alert.accept();//点击取消或者关闭弹框// alert.dismiss();
}

confirm弹框

  • Python 版本
"""Prompt 弹窗获取文本、输入内容、确认操作"""
driver.get("http://sahitest.com/demo/promptTest.htm")
driver.find_element_by_name("b1").click()
#添加显示等待,等待弹框的出现
WebDriverWait(driver, 5).until(EC.alert_is_present())
#切换到弹框
alert = driver.switch_to.alert
#向弹框输入一段文本
alert.send_keys('Selenium Alert弹出窗口输入信息')
#点击确定
alert.accept()
  • Java 版本
@Test
public void alert1Test() {// Prompt 弹窗获取文本、输入内容、确认操作driver.get("http://sahitest.com/demo/promptTest.htm");driver.findElement(By.name("b1")).click();// 添加显示等待,等待弹框的出现WebDriverWait wait = new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 切换到弹框Alert alert = driver.switchTo().alert();// 向弹框输入一段文本alert.sendKeys("Selenium Alert弹出窗口输入信息");// 点击确定alert.accept();
}

prompt 弹框

  • Python 版本
"""Confirm弹窗获取文本、确认、取消操作"""
driver.get("http://sahitest.com/demo/confirmTest.htm")
driver.find_element_by_name("b1").click()
# 等待弹出窗口出现
WebDriverWait(driver, 5).until(EC.alert_is_present())
#切换到弹框
alert = driver.switch_to.alert
#点击确定
alert.accept()
#点击取消
alert.dismiss()
  • Java 版本
@Test
public void confirmTest() {// Confirm弹窗获取文本、确认、取消操作driver.get("http://sahitest.com/demo/confirmTest.htm");driver.findElement(By.name("b1")).click();// 添加显示等待,等待弹框的出现WebDriverWait wait = new WebDriverWait(driver, 5);wait.until(ExpectedConditions.alertIsPresent());// 切换到弹框Alert alert = driver.switchTo().alert();// 点击确定alert.accept();// 点击取消alert.dismiss();
}

文件的上传与弹框处理,是做web自动化测试的必备技能,大家一定要掌握哦~

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • 善用exchange server自带的反垃圾邮件功能过滤垃圾邮件
  • element的表单校验证件号规则以及输入“无”的情况校验通过
  • 嘿呦喂!一文了解Mysql的MVCC机制!
  • 方案分享:F5机器人防御助企业应对复杂攻击
  • FreeRTOS_任务通知
  • 如何在电脑上制作可视化待办任务清单?
  • ❤️ React的安装和使用(实战篇)
  • Redis-使用java代码操作Redis
  • LangChain+LLM实战---向量数据库介绍
  • Langchain-Chatchat-win10本地安装部署成功笔记(CPU)
  • 基于.NET、Uni-App开发支持多平台的小程序商城系统 - CoreShop
  • Mybatis-Plus自动填充功能配置和使用 [MyBatis-Plus系列] - 第494篇
  • 设计模式之策略模式(Strategy)
  • hdlbits系列verilog解答(always块case语句2)-34
  • Kotlin 进阶函数式编程技巧
  • [LeetCode] Wiggle Sort
  • 【mysql】环境安装、服务启动、密码设置
  • HTML中设置input等文本框为不可操作
  • java多线程
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Python学习之路16-使用API
  • scala基础语法(二)
  • Vim Clutch | 面向脚踏板编程……
  • 创建一个Struts2项目maven 方式
  • 简单数学运算程序(不定期更新)
  • 模型微调
  • 判断客户端类型,Android,iOS,PC
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 通过几道题目学习二叉搜索树
  • 微信小程序实战练习(仿五洲到家微信版)
  • 用mpvue开发微信小程序
  • MyCAT水平分库
  • 进程与线程(三)——进程/线程间通信
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​第20课 在Android Native开发中加入新的C++类
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #前后端分离# 头条发布系统
  • (145)光线追踪距离场柔和阴影
  • (2)nginx 安装、启停
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .Net 8.0 新的变化
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net6 Api Swagger配置
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • ::什么意思
  • @angular/cli项目构建--Dynamic.Form
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [ C++ ] STL---stack与queue
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限