webdriver.Dispose(),.Close()和.Quit()之间的区别

这些有什么区别

  1. Webdriver.Close()
  2. Webdriver.Quit()
  3. Webdriver.Dispose()

哪一个被使用,什么时候?

这是我见过的一个很好的问题,当人们不应该使用Close()时。 我查看了Selenium Client&WebDriver C#绑定的源代码,发现如下。

  1. webDriver.Close() – closures驱动程序所关注的浏览器窗口
  2. webDriver.Quit() – 调用Dispose()
  3. webDriver.Dispose()closures所有浏览器窗口并安全结束会话

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

 public IWebDriver Driver; [SetUp] public void SetupTest() { Driver = WebDriverFactory.GetDriver(); } [TearDown] public void TearDown() { if (Driver != null) Driver.Quit(); } 

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

注意
当我试图找出一个相关的问题,为什么我的虚拟机硬盘空间不足,我发现这个问题。 结果是一个exception导致Quit()或Dispose()不会被每次运行调用,然后导致appData文件夹填充硬盘驱动器。 所以我们正确地使用Quit()方法,但代码无法访问。 总结请确保所有代码path将通过使用exception安全模式或实现IDisposable来清理您的非托pipe对象


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

Close() – 用于closures当前焦点所在的浏览器或页面。

Quit() – 用于closuresWeb驱动程序实例或销毁Web驱动程序实例(closures所有窗口)。

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

quit() :退出此驱动程序,closures每个打开的关联窗口。

close() :closures当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器。

driver.closedriver.quit是在Selenium WebDriver中closures浏览器会话的两种不同的方法。 理解这两者并知道何时使用每种方法在testing执行中是非常重要的。 因此,我试图揭示这两种方法。

driver.close – 此方法closures设置焦点的浏览器窗口。

driver.quit – 此方法基本上调用driver.dispose一个现在的内部方法,它依次closures所有的浏览器窗口,并优雅地结束WebDriver会话。

driver.dispose – 如前所述,是WebDriver的一种内部方法,根据另一个答案已经被默默的放弃 – validation需要。 这种方法在正常的testing工作stream程中确实没有用例,因为前面的方法都适用于大多数用例。

解释用例:每当你想结束程序,你应该使用driver.quit 。 它将closures所有打开的浏览器窗口并终止WebDriver会话。 如果在程序结束时没有使用driver.quit ,则WebDriver会话将无法正常closures,文件也不会从内存中清除。 这可能会导致内存泄漏错误。

上面的解释应该解释WebDriver中driver.closedriver.quit方法的区别。 希望对你有帮助。

下面的网站有一些关于seleniumtesting的好的提示: http : //www.testingdiaries.com/

根据PhantomJS的Github上的一个问题,quit()不会终止PhantomJS进程。 你应该使用:

 import signal driver = webdriver.PhantomJS(service_args=service_args) # Do your work here driver.service.process.send_signal(signal.SIGTERM) driver.quit() 

链接: https : //github.com/seleniumhq/selenium/issues/767

Selenium WebDriver

  1. WebDriver.Close()此方法用于closures当前打开的窗口。 它closures了当前驾驶员关注的开放窗口。

  2. WebDriver.Quit()此方法用于销毁WebDriver的实例。 它closures与该驱动程序相关的所有浏览器窗口,并安全结束会话。 WebDriver.Quit()调用Dispose。

  3. WebDriver.Dispose()此方法closures所有浏览器窗口并安全地结束会话

close():假设你用相同的驱动程序实例打开了多个浏览器窗口,现在在驱动程序实例上调用close()将closures驱动程序实例指向的当前窗口。 但驱动程序实例仍然保留在内存中,可用于处理其他打开的浏览器窗口。

quit():如果在驱动程序实例上调用quit()并且打开了一个或多个浏览器窗口,它将closures所有打开的浏览器窗口,驱动程序实例被垃圾收集,即从内存中移除。 所以现在你不能在调用quit()之后使用这个驱动实例来做其他操作。 如果你这样做会抛出一个exception。

dispose(): – 我不认为有一个WebDriver实例的处置方法。

你可以去这个selenium官方的Java文档链接,以供参考。