保存文件并将其更名为testPage.html,使用浏览器将其打开,单击不同的按钮,将会弹出对应的弹出对话框,接下来将在这个页面进行测试。
1 Accept()
单击弹出对话框的确认按钮,可以同时对Alert、Confirmation以及Prompt使用。
依次单击这些按钮,弹出各种对话框并进行单击,为了看得清楚,每个单击操作后面都增加了3秒的延迟。
public static void main(String[] args) throws InterruptedException {
//如果启动出现问题,可以使用System.setProperty指出firefox.exe的路径
//System.setProperty("webdriver.firefox.bin","D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html");
WebElement btn = driver.findElement(By.xpath("//input[1]"));
btn.click();
Thread.sleep(3000);
driver.switchTo().alert().accept();
WebElement btn2 = driver.findElement(By.xpath("//input[2]"));
btn2.click();
Thread.sleep(3000);
driver.switchTo().alert().accept();
WebElement btn3 = driver.findElement(By.xpath("//input[3]"));
btn3.click();
Thread.sleep(3000);
driver.switchTo().alert().accept();
}
执行代码后,可以发现页面上依次弹出了Alert、Confirmation以及Prompt对话框,并依次单击了确定按钮。
2 Dismiss()
单击弹出对话框的取消按钮,可以同时对Alert、Confirmation以及Prompt使用。不过对于Alert来说,Accept()和Dismiss()没有什么区别,所以完全不必对其使用Dismiss()。
依次单击这些按钮,弹出各种对话框并进行单击,为了看得清楚,每个单击操作后面都增加了3秒的延迟。
public static void main(String[] args) throws InterruptedException {
//如果启动出现问题,可以使用System.setProperty指出firefox.exe的路径
//System.setProperty("webdriver.firefox.bin","D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html");
WebElement btn2 = driver.findElement(By.xpath("//input[2]"));
btn2.click();
Thread.sleep(3000);
driver.switchTo().alert().dismiss();
WebElement btn3 = driver.findElement(By.xpath("//input[3]"));
btn3.click();
Thread.sleep(3000);
driver.switchTo().alert().dismiss();
}
3 SendKeys(keysToSend)
在弹出对话框框中输入文本,该方法只对Prompt弹出对话框有效。
单击“Prompt”按钮,弹出Prompt弹出对话框,然后输入一串文本。
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html");
WebElement btn3 = driver.findElement(By.xpath("//input[3]"));
btn3.click();
driver.switchTo().alert().sendKeys("这就是输入的内容");
4 Text/getText()
Text/getText()用于获取弹出对话框的文本内容。
依次单击这些按钮,弹出各种弹出对话框并进行单击,同时输出它们的文本内容。
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html");
WebElement btn = driver.findElement(By.xpath("//input[1]"));
btn.click();
System.out.println(driver.switchTo().alert().getText());
driver.switchTo().alert().accept();
WebElement btn2 = driver.findElement(By.xpath("//input[2]"));
btn2.click();
System.out.println(driver.switchTo().alert().getText());
driver.switchTo().alert().accept();
WebElement btn3 = driver.findElement(By.xpath("//input[3]"));
btn3.click();
System.out.println(driver.switchTo().alert().getText());
driver.switchTo().alert().accept();
1、alert弹框
这种弹出框处理应该毫无难度,网上也有很多介绍的,这边提供一个方法,见代码
程序清单
//处理潜在的1个alert(javascript弹出框)
public boolean dealPotentialAlert(WebDriver driver,boolean option) {
//是否存在
boolean flag = false;
//异常捕获
try {
Alert alert = driver.switchTo().alert();
//判断是否存在alert弹框
if (null == alert){
throw new NoAlertPresentException();
}
//异常捕获
try {
//确认or取消
if (option) {
//确认
alert.accept();
System.out.println("Accept the alert: " + alert.getText());
} else {
//取消
alert.dismiss();
System.out.println("Dismiss the alert: " + alert.getText());
}
flag = true;
} catch (WebDriverException e) {
if (e.getMessage().startsWith("Could not find")){
System.out.println("There is no alert appear!");
}else{
throw e;
}
}
} catch (NoAlertPresentException e) {
System.out.println("There is no alert appear!");
}
return flag;
}
2、非alert弹框
不管是JS自定义的弹出框还是windows弹出框,下面给出的方法都能准确定位
//处理多个非alert弹窗
public static boolean testNewWindows(WebDriver driver){
//当前窗口句柄
String currentHandle = driver.getWindowHandle();
//得到所有窗口的句柄
Set handles = driver.getWindowHandles();
//不包括当前窗口
handles.remove(currentHandle);
//存在窗口
if (handles.size() > 0) {
try{
//定位窗口
dr.switchTo().window(handles.iterator().next());
return true;
}catch(Exception e){
System.out.println(e.getMessage());
return false;
}
}
System.out.println("Did not find window");
return false;
}
//处理单个非alert弹窗
public static boolean testNewWindow(WebDriver driver){
try{
//定位窗口
driver.switchTo().window(driver.getWindowHandles().iterator().next());
return true;
}catch(Exception e){
System.out.println(e.getMessage());
return false;
}
}