写点什么

软件测试 | 文件上传与弹窗处理

  • 2023-02-14
    北京
  • 本文字数:2057 字

    阅读完需:约 7 分钟

在有些测试场景中,我们需要上传文件以帮助完成测试,或解决 Selenium 自带的方法无法定位到弹出的文件框以及网页弹出的提醒框问题。这些都需要我们用特殊的方式来处理。

1.文件上传

图 3-23 所示的是企业微信上传文件的操作,此操作使用自动化方式上传文件,实现的步骤是:首先定位到 “上传图片” 按钮元素,该元素为 input 标签,type 为 file,然后将文件路径作为值传入到 send_keys()方法的参数中。


上传文件演示代码如下(Python 版和 Java 版)。

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");
复制代码

2.弹窗处理

在页面测试操作中,测试人员有时在被测对象中会遇到 JavaScript 所生成的 Alert、Confirm 及 Prompt 弹窗,我们可以使用 JavaScript 的 Switch_to.aleret()方法定位到这些弹窗。然后使用 text、accept、dismiss、send_keys 等方法对弹窗进行操作。


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

2)text: 返回 Alert、Confirm、Prompt 弹窗中的文字信息。

3)accept():接收现有的警告框,即点击 "确定" 按钮操作。

4)dismiss(): 解散现有警告框,即点击 “取消” 按钮操作。

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

(1)Alert 弹窗

在窗口中输入一段文字后,点击 “提交” 按钮,会弹出确认内容的弹窗。对于这种场景可以使用下面的方式处理,演示代码如下(python 版和 Java 版)。

Python 演示代码

""" Aleart 弹窗获取文本与确认操作 """driver.get("http://sahitest.com/demo/alertTest.htm")driver.find_element_by_name("bl").click()#添加显示等待,等待弹框出现WebDriverWait(driver,5,0.5).until(EC.alert_is_present())#切换到弹框alert = driver.Switch_to.alert#打印弹框的文本print(alert.text)#点击“确定”按钮alert.accept()# 点击“取消”按钮或者关闭弹框# alert.dismiss()
复制代码


Java 演示代码

@Testpublic void alerTest{     //Alert弹窗获取文本与确认操作     driver.get("http://sahitest.com/demo/alertTest.htm");     driver.findfindElement(By.name("bl")).click();     //添加显示等待,等待弹窗出现     WebDriverWait wait = new WebDriverWait(driver,5);     Wait.until(ExpectedConditions.alertIsPresent());     //切换到弹窗     Alert alert = driver.switchTo().alert();     System.out.printIn(alert.getText());     //点击“确定”按钮     alert.accept();     //点击“取消”按钮或者关闭弹窗     //alert.dismiss();}
复制代码


(2)Confirm 弹窗

定位 Confirm 弹窗的演示代码如下(Python 版和 Java 版)。

Python 演示代码

""" 对 prompt 弹窗进行的获取文本、输入内容、确认操作 """driver.get("http://sahitest.com/demo/promptTest.htm")driver.find_element_by_name("bl").click()#添加显示等待,等待弹窗出现WebDriverWait(driver,5).until(EC.alert_is_present())#切换到弹窗alert = driver.switch_to.alert#向弹窗内输入一段文字alert.send_keys('Selenium Alert弹出窗口输入信息')#点击"确定"按钮alert.accept()
复制代码


Java 演示代码

@Testpublic void alertlTest(){    // 对 Prompt 弹窗进行的获取文本、输入内容、确认操作    driver.get("http://sahitest.com/demo/promptTest.htm");    driver.findElement(By.name("bl")).click();    //添加显示等待,等待弹窗出现    WebDriverWait wait = new WebDriverWait(driver,10);    Wait.until(ExpectedConditions.alertIsPresent());    //切换到弹窗    Alert alert = driver.switchTo().alert();    //向弹窗输入一段文字    alert.sendKeys("Selenium Alert弹出窗口输入信息");    //点击“确定”按钮    alert.accept();}
复制代码


(3)Prompt 弹窗

定位 Prompt 弹窗的演示代码如下(Python 版和 Java 版)。

Python 演示代码

"""对Confirm弹窗进行的获取文本、确认、取消操作"""driver.get("http://sahitest.com/demo/confirmTest.htm")driver.find_element_by_name("bl").click()#等待弹出窗口出现WebDriverWait(driver,5).until(EC.alert_is_present())#切换到弹窗alert = driver.switch_to.alert#点击“确定”按钮alert.accept#点击“取消”按钮alert.dismiss()
复制代码


Java 演示代码

@Testpublic void confirmTest(){    // Confirm对弹窗进行的获取文本、确认、取消操作    driver.get("http://sahitest.com/demo/confirmTest.htm");    driver.findElement(By.name("bl")).click();    //添加显式等待,等待弹窗的出现    WebDriverWait wait = new WebDriverWait(driver,5);    wait.until(ExpectedConditions.alertIsPresent());    //切换到弹窗    Alert alert = driver.switchTo().alert();    //点击"确定"按钮    alert.accept();    //点击“取消”按钮    alert.dismiss();}
复制代码

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 文件上传与弹窗处理_测试_测吧(北京)科技有限公司_InfoQ写作社区