Internet explorer Selenium Web驱动程序无法找到在接受警报后触发的新窗口
这是我面临的问题Internet explorer Selenium Web驱动程序无法找到在接受警报后触发的新窗口,internet-explorer,selenium,selenium-webdriver,Internet Explorer,Selenium,Selenium Webdriver,这是我面临的问题 登录到应用程序 转到我的应用程序的特定模块 在页面中输入所有详细信息 点击保存按钮 收到警报并接受了 接受警报时,会弹出一个新窗口 我尝试使用以下代码查找活动的windows句柄,但它始终返回值1 Set<String> afterpopup = driver.getWindowHandles(); System.out.println("Active windows" + afterpopup.size()); for(String currentwindow :
Set<String> afterpopup = driver.getWindowHandles();
System.out.println("Active windows" + afterpopup.size());
for(String currentwindow : afterpopup)
{
System.out.println(currentwindow);
if(!beforepopup.equalsIgnoreCase(currentwindow))
{
System.out.println("entered window loop");
driver.switchTo().window(currentwindow);
Thread.sleep(500);
driver.close();
}
}
Set afterpopup=driver.getWindowHandles();
System.out.println(“活动窗口”+afterpopup.size());
用于(字符串currentwindow:afterpopup)
{
System.out.println(当前窗口);
如果(!beforepopup.equalsIgnoreCase(currentwindow))
{
System.out.println(“进入窗口循环”);
driver.switchTo()窗口(currentwindow);
睡眠(500);
driver.close();
}
}
预期产量是多少?你看到了什么?
我想得到的活动窗口(如主窗口+弹出窗口)在我的情况下,它应该是2
硒版本:2.44操作系统:Windows 7
浏览器:Internet Explorer
浏览器版本:8.0.7 注意:我在弹出窗口(window.opener.document为null或不是对象)上遇到此错误。请帮我做这个
使用java8可以用于insted
Using java8 you can use for insted
public static String getNewWindow(WebDriver driver) {
List<String> newWindow = driver.getWindowHandles().stream()
.filter(n -> windows.contains(n) == false).collect(Collectors.toList());
System.out.println(newWindow.get(0));
return newWindow.get(0);
}
公共静态字符串getNewWindow(WebDriver驱动程序){
List newWindow=driver.getWindowHandles().stream()
.filter(n->windows.contains(n)=false).collect(collector.toList());
System.out.println(newWindow.get(0));
返回newWindow.get(0);
}
Set afterpopup=driver.getWindowHandles()之前,为代码设置4-5秒的睡眠时间编码>并检查输出。我有反应慢的诀窍。如果它仍然返回1,那么打开的窗口是一个弹出窗口,它是现有父窗口的一部分,而不是一个新窗口。