它们之间的区别是什么

Webdriver.Close () Webdriver.Quit () Webdriver.Dispose ()

什么时候用哪一种?


当前回答

我的理解是driver.close();将关闭当前浏览器, 和driver.quit ();将终止所有的浏览器。

其他回答

硒WebDriver

close()该方法用于关闭当前打开的窗口。它将关闭驱动程序所关注的当前打开的窗口。 WebDriver. quit()该方法用于销毁WebDriver实例。它会关闭与该驱动程序相关的所有浏览器窗口,并安全结束会话。WebDriver.Quit()调用Dispose。 该方法关闭所有浏览器窗口并安全结束会话

我的理解是driver.close();将关闭当前浏览器, 和driver.quit ();将终止所有的浏览器。

Close() -用于关闭当前具有焦点的浏览器或页面。

Quit() -用于关闭web驱动程序实例或销毁web驱动程序实例(关闭所有窗口)。

Dispose() -我不知道这个方法。

这是一个很好的问题,我看到有人在不应该的时候使用Close()。我查看了Selenium客户机和WebDriver c#绑定的源代码,发现了以下内容。

webDriver.Close() -关闭驱动程序所关注的浏览器窗口 webDriver.Quit() -调用Dispose() 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服务器上的会话。如果会话没有关闭,该会话的日志文件将保留在内存中。

driver.close()和driver.quit()在会话ID方面的差异。

司机。close -关闭设置焦点的浏览器窗口 如果在driver之后使用driver instance。NoSuchSessionException:无效的会话id

司机。quit -它基本上调用driver。dispose方法将关闭所有浏览器窗口并优雅地结束WebDriver会话 如果在driver之后使用driver instance。NoSuchSessionException:会话id为null