driver.close()将永远挂起

问题描述 投票:0回答:3

driver.close()没有在Jenkins上工作,整个测试将永远挂起。我正在使用Selenium Grid和Java并使用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"); 
    } 
}

这曾经工作并且最近开始发生。

selenium selenium-webdriver selenium-chromedriver selenium-grid
3个回答
0
投票

如果没有测试脚本的详细信息,我建议用driver.quit()替换你想要结束会话的地方;来自Selenium documentationdriver.quit()将关闭所有浏览器窗口,而driver.close()将只关闭当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器。

不要管那个

在你的BrowserFactory类中,getDriver()方法是使用driver.get()定义的。这告诉司机得到......什么都没有,这里没有传递URL的参数。这会导致问题吗?


0
投票

请尝试以下方法:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w");

此代码将关闭当前打开的选项卡。


0
投票

我发现关闭窗口的更好的解决方案是:

((JavascriptExecutor) BrowserFactory.getInstance().getDriver()).executeScript( "window.close()" );
© www.soinside.com 2019 - 2024. All rights reserved.