使用Selenium的Alert来操作javascript形式的警告框alertDialog、提示框promptDialog、确认框confirmDialog。
具体步骤如下:
1、使用xpath定位打开各项窗口的按钮,示例代码如下:
WebElement confirmButton = driver.findElement("<alertButton的xpath>");
2、单击按钮打开窗口,示例代码如下:
confirmButton.click();
3、切换到打开的窗口,示例代码如下:
Alert confirmDialog = driver.switchTo().alert();
4、获取打开的窗口中的内容并输出
System.out.println(confirmDialog.getText());
【备注】
如果打开的窗口是需要输入字符进行交互,Selenium的Alert支持键盘字符输入(sendkeys),则可以使用如下代码:
confirmDialog.sendkeys("<输入的字符串>");
5、单击窗口中的确认按钮,需要使用acccpt()方法,示例代码如下:
confirmDialog.accept();
6、交互类型的窗口一般都存在取消功能,取消功能操作使用dismiss()方法,示例代码如下:
confirmDialog.dismiss();
#################################################################################
完整的代码示例如下:
package main.java;
import java.util.ResourceBundle;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class TestDialogs {
protected WebDriver driver;
private static String base_url = "http://sislands.com/coin70/week1/dialogbox.htm";
@Before
public void setUp(){
System.setProperty("webdriver.chrome.driver", "I:\\Softwares\\ChromeDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(base_url);
}
/**
* 运行警示框的用例
* 首先,通过xpath定位到警告按钮并单击
* 然后,切换到警告框并将其窗口控点赋予Selenium的Alert,以此来操作弹出的警告框
* 最后,输入警告框中的警告信息,并执行警告框中的【确认】按钮功能,使用Alert的accept()方法
*/
@Test
public void testAlertDialog(){
WebElement alertButton = driver.findElement(By.xpath("/html/body/div/center/table/tbody/tr/td/form[1]/p/input"));
alertButton.click();
Alert jsAlert = driver.switchTo().alert(); //切换到警告框并将其窗口控点赋予Selenium的Alert,以此来操作弹出的警告框
System.out.println(jsAlert.getText());
jsAlert.accept();
}
/**
* 运行提示框的用例
* 首先,通过xpath定位到提示框按钮并单击
* 然后,切换到提示框并将窗口控点赋值给Selenium的Alert,并在弹出的提示对话窗口中的文本框中输入一段字符串
* 其次,单击确认按钮
* 紧接以上步骤,再次对提示框进行以上操作并单击取消按钮
*/
@Test
public void testPromptDialog(){
WebElement promptButton = driver.findElement(By.xpath("/html/body/div/center/table/tbody/tr/td/form[2]/p/input"));
promptButton.click();
//通过单击提示对话框按钮弹出的提示框selenium处理
Alert jsPrompt = driver.switchTo().alert();
//在弹出的提示对话框文本框中输入字符串
jsPrompt.sendKeys("White");
//单击提示框中的确认按钮保存输入的信息
jsPrompt.accept();
//获取保存成功后弹出的提示框中的文本信息
System.out.println("单击prompt按钮后弹出的窗口内容中输入内容并确认后返回的信息是:"+jsPrompt.getText());
//在保存信息确认提示框中,单击确认按钮关闭当前提示窗口
jsPrompt=driver.switchTo().alert();
jsPrompt.accept();
//再次对提示框进行操作并单击取消按钮
promptButton.click();
jsPrompt = driver.switchTo().alert();
System.out.println("单击prompt按钮后弹出的窗口内容为:"+jsPrompt.getText());
jsPrompt.dismiss();//单击取消按钮
//在弹出的取消确认窗口中获取文本信息
jsPrompt=driver.switchTo().alert();
System.out.println("在弹出的提示窗口中单击取消按钮后再次弹出的窗口内容为:"+jsPrompt.getText());
jsPrompt.accept();//在取消确认窗口中单击确认按钮以关闭当前窗口
}
/**
* 运行确认框的测试用例
* 首先,通过xpath定位到确认框按钮并单击
* 然后,使用Selnium的Alert赋值给弹出的确认窗口控点,,并获取该窗口中的内容
* 其次,在弹出的确认窗口中,单击【确认】按钮,
* 再次,切换到确认后弹出的信息窗口,并获取该窗口内容
* 最后,再次执行以上步骤进行确认框的取消功能操作
*/
@Test
public void testConfirmDialog(){
WebElement confirmButton = driver.findElement(By.xpath("/html/body/div[1]/center/table/tbody/tr/td/form[3]/p/input"));
confirmButton.click();
Alert jsConfirm = driver.switchTo().alert();
System.out.println("单击confirm按钮后弹出的窗口内容为:"+jsConfirm.getText());
jsConfirm.accept();
jsConfirm = driver.switchTo().alert();//切换到单击确认后再次弹出的确认提示窗口
System.out.println("在弹出的confirm窗口中单击确认按钮后弹出的确认窗口内容为:"+jsConfirm.getText());
jsConfirm.accept();//单击确认后弹出的提示窗口中的确定按钮
//再次执行confirm窗口的取消功能操作
confirmButton.click();
jsConfirm=driver.switchTo().alert();
//此处直接单击取消按钮
jsConfirm.dismiss();
//获取取消操作之后弹出的取消成功的提示窗口内容
System.out.println("在弹出的confirm窗口中单击取消后返回的取消成功提示窗口内容:"+jsConfirm.getText());
//关闭取消成功提示窗口
jsConfirm.accept();
}
//在各个test运行结束后,记得关闭driver
@After
public void testDriverDown(){
driver.quit();
}
}