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