比方说
我有一个
window 1
. 我已经执行了一个window 1
使window 2
出现的事件。现在我切换到
window 2
并点击了一个关闭它的按钮window 2
。
如果我driver.close()
在执行导致窗口关闭的事件后使用,有时它会抛出NoSuchWindowException
.
如果我不使用driver.close()
then 有时 即使只有一个窗口driver.getWindowHandles().size()
也会返回,并且我已经等待足够的时间使窗口数变为.2
1
我刷新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();
上一行可能会抛出异常,因为驱动程序试图切换到一个已经关闭的窗口”