51Testing软件测试论坛
标题:
selenium2使用句柄无法获取新窗口
[打印本页]
作者:
涵灵
时间:
2015-7-16 18:05
标题:
selenium2使用句柄无法获取新窗口
登陆页面跳转到新窗口后,自动关闭,源码如下:
var subWindow = window.open(url, "mainWindow", "toolbar=no,menubar=no,status=no,scrollbars,top=0,left=0,height=" + (screen.availHeight-35) + ",width=" + screen.availWidth);
if(subWindow != null){
self.top.opener = null;
self.top.open('', '_self');
self.top.close();
subWindow.focus(); //如果已打开新窗口,则将其显示在最前
}
使用句柄获取:
String currentHandle = driver.getWindowHandle();
Set<String> handles = driver.getWindowHandles();
Iterator<String> handlesIterator = handles.iterator();
while (handlesIterator.hasNext()) {
if (handlesIterator.next()==currentHandle){
continue;
}
else{
//跳转到新页面 }
}
获取不到新页面。打印所有句柄,也只有当前句柄(登陆页面),only one。。。。
怎么解决呢?是不是因为源程序打开之后关掉原来的,所以获取不到了?
求大神解决。
作者:
jingzizx
时间:
2015-7-17 12:47
参考一下
http://blog.csdn.net/hhabc123456789/article/details/21862139
作者:
涵灵
时间:
2015-7-20 13:49
jingzizx 发表于 2015-7-17 12:47
参考一下
http://blog.csdn.net/hhabc123456789/article/details/21862139
设置了等待时间,还是不行。尝试把源码中self.top.close()注释掉,就可以获取到子窗口的句柄。
if(subWindow != null){
self.top.opener = null;
self.top.open('', '_self');
// self.top.close();
subWindow.focus(); //如果已打开新窗口,则将其显示在最前
}
有可能是,父窗口打开子窗口后,关闭掉了。webDriver还没来的及获取到新的句柄,父窗口就关闭掉了。。抛出异常:
org.openqa.selenium.NoSuchWindowException:
Unable to get browser (WARNING: The server did not provide any stacktrace information)
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2