涵灵 发表于 2015-7-16 18:05:50

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:59

参考一下
http://blog.csdn.net/hhabc123456789/article/details/21862139

涵灵 发表于 2015-7-20 13:49:59

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)

页: [1]
查看完整版本: selenium2使用句柄无法获取新窗口