这是一个很好的问题,我看到人们不应该使用 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 服务器上的会话。如果会话未关闭,则该会话的日志文件将保留在内存中。