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


    实战演示

    文件上传

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

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

    • Python 版本
    1. driver.find_element(By.CSS_SELECTOR, "#js_upload_input")\
    2. .send_keys("./hogwarts.png")
    • Java 版本
    1. driver.findElement(By.cssSelector("#js_upload_input"))\
    2. .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 版本
    1. """Alert弹窗获取文本与确认操作"""
    2. driver.get("http://sahitest.com/demo/alertTest.htm")
    3. driver.find_element_by_name("b1").click()
    4. # 添加显示等待,等待弹框的出现
    5. WebDriverWait(driver, 5, 0.5).until(EC.alert_is_present())
    6. # 切换到弹框
    7. alert = driver.switch_to.alert
    8. # 打印弹框的文本
    9. print(alert.text)
    10. #点击确定
    11. alert.accept()
    12. # 点击取消或者关闭弹框
    13. # alert.dismiss()
    • Java 版本
    1. @Test
    2. public void alertTest(){
    3. // Alert弹窗获取文本与确认操作
    4. driver.get("http://sahitest.com/demo/alertTest.htm");
    5. driver.findElement(By.name("b1")).click();
    6. // 添加显示等待,等待弹框的出现
    7. WebDriverWait wait = new WebDriverWait(driver, 5);
    8. wait.until(ExpectedConditions.alertIsPresent());
    9. // 切换到弹框
    10. Alert alert = driver.switchTo().alert();
    11. System.out.println(alert.getText());
    12. //点击确定
    13. alert.accept();
    14. //点击取消或者关闭弹框
    15. // alert.dismiss();
    16. }

    confirm弹框

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

    prompt 弹框

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

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

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

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

  • 相关阅读:
    Java学习路线(13)——Collection集合类:List集合与Set集合
    我知道哪里有问题了浪费各位时间了这个问题不用再看啦
    wordpress搭建自己的博客详细过程以及踩坑
    13这些权限废弃,你的应用受影响了吗?
    Vue09 事件的修饰符
    发面试题:(四)synchronized和lock区别
    SpringBoot约定大于配置
    前端性能优化 - 虚拟滚动
    Spring Cloud:面向应用层的云架构解决方案
    【甄选靶场】Vulnhub百个项目渗透——45、项目四十五:bulldog-1(waf绕过)
  • 原文地址:https://blog.csdn.net/NHB456789/article/details/134246250