基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框

alert、confirm、prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理。
而现在webdriver对这些弹出框做了专门的处理,使用selenium2处理对话框就变得十分方便简洁。

alert、confirm、prompt 不是 JavaScript 核心的函数。

alert 是 BOM 中的成员函数,具体说是 window.alert。

所以说,alert对话框显示在最前,并且禁止了浏览器页面其他的操作。废话不多说,看看怎么用webdriver操作这三种弹出框。

一、操作 Alert 弹框


alert在网页的HTML代码:

<input id="alert" type='button' value='alert' onclick='alert("this is a [alert] window!");'/>

当我们点击这个按钮的时候,就会弹出alert弹框:


package com.automation.alert;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 类说明:操作alert弹框 * <br/> * @version 1.0 * 2016年11月19日 下午9:47:12 */ public class AlertDemo { private static WebDriver driver = null ; private static String chromeDriverDir = "D:\\workspace\\A_Test\\resource\\chromedriver.exe"; public static void main(String[] args) { //1.打开浏览器; System.setProperty("webdriver.chrome.driver", chromeDriverDir); driver = new ChromeDriver(); driver.manage().window().maximize(); //打开文件网址; driver.get("file:///E:/desktop/upload.html"); //定位alert按钮对象; WebElement alertButton = driver.findElement(By.id("alert")); //点击alert按钮,弹出alert弹出框 alertButton.click(); try { //获取Alert弹框对象; Alert alertWindow = driver.switchTo().alert(); //获取alert弹框的文本,并打印到控制台; String alertText = alertWindow.getText(); System.out.println(alertText); //点击alert弹出框中的确定按钮; alertWindow.accept(); } catch (NoAlertPresentException e) { System.out.println("尝试操作的alert弹出框未找到!"); e.printStackTrace(); } } }

二、操作confirm弹框


confirm在网页的HTML代码:

<input id="confirm" type='button' value='confirm' onclick='confirm("this is a [confirm] window!");'/>

点击confirm按钮的是,弹出confirm弹框,这个弹框有两个按钮,一个确定按钮,一个取消按钮;


package com.automation.alert;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 类说明:操作confirm弹框 * <br/> * @version 1.0 * 2016年11月19日 下午9:46:47 */ public class ConfirmDemo { private static WebDriver driver = null ; private static String chromeDriverDir = "D:\\workspace\\A_Test\\resource\\chromedriver.exe"; public static void main(String[] args) { //1.打开浏览器; System.setProperty("webdriver.chrome.driver", chromeDriverDir); driver = new ChromeDriver(); driver.manage().window().maximize(); //打开文件网址; driver.get("file:///E:/desktop/upload.html"); //定位confirm按钮对象; WebElement confirmButton = driver.findElement(By.id("confirm")); //点击confirm按钮,弹出confirm弹出框 confirmButton.click(); //获取Alert弹框对象; Alert confirmWindow = null; try { confirmWindow = driver.switchTo().alert(); //获取confirm弹框的文本,并打印到控制台; String confirmText = confirmWindow.getText(); System.out.println(confirmText); //点击confirm弹出框中的确定按钮; confirmWindow.accept(); //重新操作,点击confirm弹框的取消按钮; confirmButton.click(); confirmWindow = driver.switchTo().alert(); confirmWindow.dismiss(); } catch (NoAlertPresentException e) { System.out.println("尝试操作的confirm弹出框未找到!"); e.printStackTrace(); } } }

三、操作prompt弹框


prompt在网页的HTML代码:

<input id="prompt" type='button' value='prompt' onclick='prompt("this is a [prompt] window!","1111");'/>

点击prompt按钮的是,弹出prompt弹框,这个弹框有两个按钮、一个输入框;


package com.automation.alert;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 类说明:操作prompt弹框 * <br/> * @version 1.0 * 2016年11月19日 下午10:02:42 */ public class PromptDemo { private static WebDriver driver = null ; private static String chromeDriverDir = "D:\\workspace\\A_Test\\resource\\chromedriver.exe"; public static void main(String[] args) { //1.打开浏览器; System.setProperty("webdriver.chrome.driver", chromeDriverDir); driver = new ChromeDriver(); driver.manage().window().maximize(); //打开文件网址; driver.get("file:///E:/desktop/upload.html"); //定位prompt按钮对象; WebElement promptButton = driver.findElement(By.id("prompt")); //点击prompt按钮,弹出prompt弹出框 promptButton.click(); //获取Alert弹框对象; Alert promptWindow = null; try { promptWindow = driver.switchTo().alert(); //获取prompt弹框的文本,并打印到控制台; String confirmText = promptWindow.getText(); System.out.println(confirmText); //向prompt弹框中的输入框对象,输入文本; promptWindow.sendKeys("selenium + webdriver!"); //点击prompt弹出框中的确定按钮; promptWindow.accept(); //重新操作,点击prompt弹框的取消按钮; promptButton.click(); promptWindow = driver.switchTo().alert(); promptWindow.dismiss(); } catch (NoAlertPresentException e) { System.out.println("尝试操作的prompt弹出框未找到!"); e.printStackTrace(); } } }

从以上代码可以看出driver.switchTo().alert();这句可以得到 alert \ confirm \ prompt 对话框的对象,然后运用其方法对它进行操作。对话框操作的主要方法有:

getText() 得到它的文本值
accept() 相当于点击它的"确认"
dismiss() 相当于点击"取消"或者叉掉对话框
sendKeys() 输入值,这个alert\confirm没有对话框就不能用了,不然会报错。

 

我们专注于持续集成,更多原创请关注:www.hordehome.com

转载于:https://www.cnblogs.com/hordehome/p/6406836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值