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()" );