它们之间的区别是什么
Webdriver.Close () Webdriver.Quit () Webdriver.Dispose ()
什么时候用哪一种?
它们之间的区别是什么
Webdriver.Close () Webdriver.Quit () Webdriver.Dispose ()
什么时候用哪一种?
当前回答
quit():退出这个驱动程序,关闭所有打开的相关窗口。
close():关闭当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器。
其他回答
“退出”和“接近”有两个区别。
因为Quit()将关闭程序打开的所有窗口,而Close()将关闭焦点集中在set上的正确窗口。 Quit() -考虑,WebDriver驱动=新的ChromeDriver(); 上述语句将创建一个会话ID。为整个会话维护相同的会话ID。 会话ID - 73e6d7c2ae55d9f059ad1cce248adb75
输入url后,相同的会话ID - 73e6d7c2ae55d9f059ad1cce248adb75
在currentUrl()之后,会话ID - 73e6d7c2ae55d9f059ad1cce248adb75
在quit()后浏览器的会话ID - null
如果用户试图执行任何语句,会话ID null将发送给服务器。在看到这个,服务器将发送异常-会话ID为空。调用quit()后使用WebDriver ?
在Close()中,将为整个会话创建和维护随机会话ID(只有一个)。执行Close()后,会话将无效或过期。 异常
因此,在quit()中会话为空,在close()中会话id无效。
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 ();将终止所有的浏览器。
基于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()
link