2

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

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

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

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

4

1 回答 1

1

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

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

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

稍后,您可以以更干净的方式实现它,例如:

*在我们的例子中,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);
    }

}
于 2013-09-24T13:56:34.337 回答