比方说
我有一个
window 1. 我已经执行了一个window 1使window 2出现的事件。现在我切换到
window 2并点击了一个关闭它的按钮window 2。
如果我driver.close()在执行导致窗口关闭的事件后使用,有时它会抛出NoSuchWindowException.
如果我不使用driver.close()then 有时 即使只有一个窗口driver.getWindowHandles().size()也会返回,并且我已经等待足够的时间使窗口数变为.21
我刷新driver.getWindowHandles()并检查driver.getWindowHandles().size()成为1,但有时不会。
我的问题是,driver.close()单击导致窗口关闭的按钮后是否需要使用该方法?如何driver.close()正确使用。
编辑:是的,这是一个问题。如果 selenium 没有意识到window2已关闭,它会不断将句柄返回为2. 假设我关闭window2并切换回window1并执行了一个打开的事件window3。现在我想切换到window3. 这是问题,因为 Selenium 仍然认为windows2存在,现在根据 Selenium 有三个窗口。
String window1Handle = driver.getWindowHandle();
//Now I have oepend window3
//According to the Selenium there are 3 windows
// So driver.getWindowHandles().size() returns 3
for (String window : driver.getWindowHandles() {
if (!window.equals(window1Handle)) {
driver.switchTo().window();
上一行可能会抛出异常,因为驱动程序试图切换到一个已经关闭的窗口”