尝试在新窗口中获取报告时出现NoSuchWindowException

时间:2016-09-29 07:31:13

标签: selenium testing groovy geb

我的代码中有以下内容:

withWindow({ title == 'Google' }) {
    report "08"
}

报告引导我发现异常NoSuchWindowException。我已经检查过这是否是Window选择器的一个问题但事实并非如此,经过一些研究我猜测问题是驱动程序被搞乱了所以我存储并切换了我的驱动程序:

String  mainHandle= driver.getWindowHandle();
driver.switchTo().window('Google');

但我一直得到同样的错误。所以我试过了:

driver.get("http://www.google.com");

它正在运行,但我需要在dinamycally并自动执行此操作,因为我们正在使用的窗口和弹出窗口是数百个并且具有不同的标题。

如何在每个打开的窗口中实现这一目标?我们使用外部工具生成代码,所以我不需要做“魔术”,只有driver.get.windowUrl或类似的东西对我有用,我稍后会添加并发。

1 个答案:

答案 0 :(得分:0)

如果要获取打开的最后一个窗口句柄,可以执行以下操作:

public String getLastWindowHandle() {
    Set<String> windows = webDriver.getWindowHandles();
    Iterator<String> itera = windows.iterator();
    String window = null;
    while (itera.hasNext()) {
        window = itera.next();
    }
    return window;
}

使用此句柄,您可以切换到新窗口:

webDriver.switchTo().window(getLastWindowHandle());