Selenium webdriver webdriver.Dispose()、.Close()和.Quit()之间的差异
这两者有什么区别Selenium webdriver webdriver.Dispose()、.Close()和.Quit()之间的差异,selenium-webdriver,Selenium Webdriver,这两者有什么区别 Webdriver.Close() Webdriver.Quit() Webdriver.Dispose() 使用哪一个以及何时使用?Close()-用于关闭当前具有焦点的浏览器或页面 Quit()-用于关闭web驱动程序实例或销毁web驱动程序实例(关闭所有窗口) Dispose()-我不知道这种方法。这是一个很好的问题,我看到人们在不应该使用Close()的时候使用Close()。我查看了Selenium客户端和WebDriver C#绑定的源代码,发现了以下内容 webD
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Close()
-用于关闭当前具有焦点的浏览器或页面
Quit()
-用于关闭web驱动程序实例或销毁web驱动程序实例(关闭所有窗口)
Dispose()
-我不知道这种方法。这是一个很好的问题,我看到人们在不应该使用Close()的时候使用Close()。我查看了Selenium客户端和WebDriver C#绑定的源代码,发现了以下内容
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服务器上的会话。如果会话未关闭,该会话的日志文件将保留在内存中。
quit()
:退出此驱动程序,关闭所有打开的相关窗口
close()
:关闭当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器。驱动程序。close
和驱动程序。quit
是关闭Selenium WebDriver中浏览器会话的两种不同方法。理解这两种方法并知道何时使用每种方法在测试执行中都很重要。因此,我试图阐明这两种方法
driver.close
-此方法关闭设置焦点的浏览器窗口。尽管这种方法的名称很熟悉,WebDriver
并没有实现
driver.quit
–此方法基本上调用driver.dispose
一个现在的内部方法,该方法依次关闭所有浏览器窗口并优雅地结束WebDriver会话
driver.dispose
-如前所述,是WebDriver的一种内部方法,根据另一个答案-需要验证,该方法已被悄悄删除。在正常的测试工作流中,这种方法实际上没有用例,因为前面的两种方法都适用于大多数用例
解释用例:
您应该使用driver.quit
来结束程序。它将关闭所有打开的浏览器窗口并终止WebDriver会话。如果在程序结束时不使用driver.quit
,WebDriver会话将无法正常关闭,文件也无法从内存中清除。这可能会导致内存泄漏错误
上面的解释应该解释WebDriver中driver.close
和driver.quit
方法之间的区别。我希望你觉得它有用
以下网站提供了一些关于硒测试的好提示:SeleniumWebDriver
WebDriver.Close()
此方法用于关闭当前打开的窗口。它关闭驱动程序关注的当前打开的窗口WebDriver.Quit()
此方法用于销毁WebDriver实例。它关闭与该驱动程序关联的所有浏览器窗口,并安全结束会话。Quit()调用DisposeWebDriver.Dispose()
此方法关闭所有浏览器窗口并安全结束会话基于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()
close():-假设您使用同一个驱动程序实例打开了多个浏览器窗口,现在对驱动程序实例调用close()将关闭驱动程序实例指向的当前窗口。但驱动程序实例仍保留在内存中,可用于处理其他打开的浏览器窗口
quit():-如果在驱动程序实例上调用quit(),并且有一个或多个浏览器窗口打开,它将关闭所有打开的浏览器窗口,并且驱动程序实例将被垃圾收集,即从内存中删除。因此,在对该驱动程序实例调用quit()后,现在无法使用该驱动程序实例执行其他操作。如果您这样做,它将抛出异常
dispose():-我不认为WebDriver实例有dispose方法
您可以访问此selenium官方java文档以供参考。我的理解是
driver.close()代码>将关闭当前浏览器,
和driver.quit()
将终止所有浏览器。driver.close()和driver.quit()之间的差异。
driver.close–关闭设置焦点的浏览器窗口
driver.quit–它基本上调用driver.dispose方法,然后关闭所有浏览器窗口并优雅地结束WebDriver会话。close()是一个WebDriver命令,用于关闭当前处于焦点的浏览器窗口。尽管这种方法的名称很熟悉,WebDriver