页面中遇到的弹出框,我一般把它分为两种方式处理:
1、alert弹出框
2、非alert弹框
给出的代码中基本能处理所有页面的各种弹框。
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;
}
}
+ 猜你喜欢...
===== 关于 DiggerPlus =====
DiggerPlus是国内新锐测试人垂直内容博客,专注于挖掘测试工具,普及测试技术,专注于测试人能力提升,博客上线后就受到广大测试人的热烈追捧;此外,DiggerPlus深度整合评测资源,揭秘科技数据和真相,让读者更懂科技,更好地把玩科技。 我们始终保持"独立,客观,严谨,优秀"的优良作风,努力为读者带来源源不断的优质内容。想访问更多酷毙的测试人网站?赶紧来DiggerPlus测试人网址导航看看吧!
===== DiggerPlus Team =====
DiggerPlus Team是DiggerPlus官方发起的团队,这是一群热爱科技,热爱测试,喜欢深度挖掘的热血测试人,他们是评测师,测试专家。 我们欢迎优秀的测试人加入DiggerPlus Team。 加入DiggerPlus,可以成为我们的认证Dper,认证Dper拥有DiggerPlus独一无二的专栏并得到个人展示。