在有些测试场景中,我们需要上传文件以帮助完成测试,或解决 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 霍格沃兹的干货都很硬核
评论