selenium-webdriver - webdriver.Dispose()、.Close() 和 .Quit() 之间的区别

selenium-webdriver - webdriver.Dispose()、.Close() 和 .Quit() 之间的区别

这是一个很好的问题,我看到人们不应该使用 Close()。我查看了 Selenium Client & WebDriver C# Bindings 的源代码,发现了以下内容。

webDriver.Close()- 关闭驱动程序关注的浏览器窗口

webDriver.Quit()- 调用 Dispose()

webDriver.Dispose()关闭所有浏览器窗口并安全结束会话

下面的代码将处理驱动程序对象,结束会话并关闭在测试期间打开的所有浏览器,无论测试失败还是通过。

public IWebDriver Driver;

[SetUp]

public void SetupTest()

{

Driver = WebDriverFactory.GetDriver();

}

[TearDown]

public void TearDown()

{

if (Driver != null)

Driver.Quit();

}

总之,请确保在退出程序之前调用 Quit() 或 Dispose(),除非您确定自己在做什么,否则不要使用 Close() 方法。

注意

当我试图找出一个相关的问题时,我发现了这个问题,为什么我的虚拟机的硬盘空间不足。结果发现异常导致每次运行都没有调用 Quit() 或 Dispose() ,从而导致 appData 文件夹填满硬盘驱动器。所以我们正确地使用了 Quit() 方法,但是代码无法访问。摘要确保所有代码路径都将通过使用异常安全模式或实现 IDisposable 来清理您的非托管对象

此外

,在 RemoteDriver 调用 Quit() 或 Dispose() 的情况下,也会关闭 Selenium 服务器上的会话。如果会话未关闭,则该会话的日志文件将保留在内存中。

相关文章