点击Chrome浏览器上的按钮后,我有一个弹出窗口。 一旦以编程方式启动弹出窗口,驱动程序对象的任何进一步操作都会导致此异常:
OpenQA.Selenium.WebDriverException:服务器没有响应url
启动弹出窗口后,窗口句柄列表(driver.WindowHandles
)的数量也没有变化。请不要将其与选项卡中的切换窗口混淆。
Selenium ChromeDriver目前是否支持处理弹出窗口?
答案 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);
}
}