Selenium ChromeDriver目前是否支持处理弹出窗口?

时间:2012-09-16 20:17:35

标签: selenium-chromedriver

点击Chrome浏览器上的按钮后,我有一个弹出窗口。 一旦以编程方式启动弹出窗口,驱动程序对象的任何进一步操作都会导致此异常:

  

OpenQA.Selenium.WebDriverException:服务器没有响应url

启动弹出窗口后,窗口句柄列表(driver.WindowHandles)的数量也没有变化。请不要将其与选项卡中的切换窗口混淆。

Selenium ChromeDriver目前是否支持处理弹出窗口?

1 个答案:

答案 0 :(得分:1)

处理弹出窗口与处理窗口数相同。 尝试做:

driver().switchTo().window((String)driver.getWindowHandles().toArray()[index]);

其中index是新窗口的索引(可以在适当的switch-window函数中作为参数传递)。

稍后,您可以采用更简洁的方式实现它,例如:

*在我们的例子中,webdriver在WebDriverProxy对象中变形。

    public static void switchFocusToWindowNumber(int index, WebDriverProxy webDriverProxy) {
    try {
        webDriverProxy.getWebDriver().switchTo().window((String) webDriverProxy.getWebDriver().getWindowHandles().toArray()[index]);
    } catch (ArrayIndexOutOfBoundsException e) {
        throw new ArrayIndexOutOfBoundsException("ArrayIndexOutOfBoundsException: Number of open windows is: "
                + getNumberofWindows(webDriverProxy) + " Trying to close window number: " + index + "\n Exception: " + e);
    }    catch (NoSuchWindowException e) {
        throw new NoSuchWindowException ("NoSuchWindowException: Number of windows is: " + getNumberofWindows(webDriverProxy) +
                " Trying to close window number: " + index + "\n Exception: " + e);
    }

}