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

518 篇文章 3 订阅
514 篇文章 2 订阅

在有些测试场景中,我们需要上传文件以帮助完成测试,或解决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演示代码

@Test
public 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演示代码

@Test
public 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演示代码

@Test
public 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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值