driver.close() 将永远挂起
driver.close() will hang for forever
driver.close() 不适用于 Jenkins,整个测试将永远挂起。我正在使用带有 Java 的 Selenium Grid 并使用 Chrome 驱动程序。
我不想使用 driver.quit()
。我必须使用 driver.close()
。我打开了两个选项卡,我必须关闭一个。
public static void closeBrowser()
{
try
{
WebDriver testDriver = BrowserFactory.getInstance().getDriver();
if (testDriver != null)
{
testDriver.close();
}
wait.wait(2);
Log.info("Closing the browser");
}
catch (Exception e)
{
Log.info("Cannot close browser");
}
}
这曾经有效并且最近开始发生。
没有你的测试脚本的细节,我可以建议在你想结束会话的地方替换 driver.quit()
;从 Selenium documentation 开始,driver.quit()
将关闭所有浏览器 windows 而 driver.close()
将仅 "Close the current window, quitting the browser if it's the last window currently open."
没关系
在您的 BrowserFactory
class 中,getDriver()
方法是使用 driver.get()
定义的。那是告诉驱动程序得到...什么都没有,这里没有为 URL 传递任何参数。这会导致问题吗?
尝试以下操作:
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w");
此代码将关闭当前打开的选项卡。
我发现关闭 window 的更好解决方案是:
((JavascriptExecutor) BrowserFactory.getInstance().getDriver()).executeScript( "window.close()" );
driver.close() 不适用于 Jenkins,整个测试将永远挂起。我正在使用带有 Java 的 Selenium Grid 并使用 Chrome 驱动程序。
我不想使用 driver.quit()
。我必须使用 driver.close()
。我打开了两个选项卡,我必须关闭一个。
public static void closeBrowser()
{
try
{
WebDriver testDriver = BrowserFactory.getInstance().getDriver();
if (testDriver != null)
{
testDriver.close();
}
wait.wait(2);
Log.info("Closing the browser");
}
catch (Exception e)
{
Log.info("Cannot close browser");
}
}
这曾经有效并且最近开始发生。
没有你的测试脚本的细节,我可以建议在你想结束会话的地方替换 driver.quit()
;从 Selenium documentation 开始,driver.quit()
将关闭所有浏览器 windows 而 driver.close()
将仅 "Close the current window, quitting the browser if it's the last window currently open."
没关系
在您的 BrowserFactory
class 中,getDriver()
方法是使用 driver.get()
定义的。那是告诉驱动程序得到...什么都没有,这里没有为 URL 传递任何参数。这会导致问题吗?
尝试以下操作:
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w");
此代码将关闭当前打开的选项卡。
我发现关闭 window 的更好解决方案是:
((JavascriptExecutor) BrowserFactory.getInstance().getDriver()).executeScript( "window.close()" );