它们之间的区别是什么
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
什么时候用哪一种?
Close() -用于关闭当前有焦点的浏览器或页面。
Close()
Quit() -用于关闭web驱动程序实例或销毁web驱动程序实例(关闭所有窗口)。
Quit()
Dispose() -我不知道这个方法。
Dispose()
这是一个很好的问题,我看到有人在不应该的时候使用Close()。我查看了源代码的硒客户端&WebDriver c#绑定,发现如下。
webDriver.Close()
webDriver.Quit()
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():退出这个驱动程序,关闭所有打开的相关窗口。
quit()
close():关闭当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器。
close()
driver.close和driver.quit是在Selenium WebDriver中关闭浏览器会话的两种不同方法。理解它们并知道何时使用每种方法在您的测试执行中是很重要的。因此,我试图阐明这两种方法。
driver.close
driver.quit
driver.close -该方法关闭设置焦点的浏览器窗口。尽管这个方法的名字很熟悉,但WebDriver确实不实现了AutoCloseable接口。
WebDriver
AutoCloseable
driver.quit——这个方法调用driver.dispose作为内部方法,它会关闭所有的浏览器窗口,并优雅地结束WebDriver会话。
driver.dispose
driver.dispose -如前所述,是WebDriver的内部方法,根据另一个答案已被静默删除-需要验证。这种方法在正常的测试工作流程中实际上没有用例,因为前面的任何一种方法都应该适用于大多数用例。
上面的解释应该解释了WebDriver中driver.close和driver.quit方法之间的区别。我希望它对你有用。
下面的网站有一些关于硒测试的好提示
硒WebDriver
WebDriver.Close()此方法用于关闭当前打开的窗口。它将关闭驱动程序所关注的当前打开的窗口。
WebDriver.Close()
WebDriver.Quit()此方法用于销毁WebDriver实例。它会关闭与该驱动程序相关的所有浏览器窗口,并安全结束会话。WebDriver.Quit()调用Dispose。
WebDriver.Quit()
WebDriver.Dispose()此方法关闭所有浏览器窗口并安全结束会话
WebDriver.Dispose()
import signal driver = webdriver.PhantomJS(service_args=service_args) # Do your work here driver.service.process.send_signal(signal.SIGTERM) driver.quit()
link
close():-假设你用相同的驱动程序实例打开了多个浏览器窗口,现在在驱动程序实例上调用close()将关闭驱动程序实例指向的当前窗口。但是驱动程序实例仍然保留在内存中,可以用来处理其他打开的浏览器窗口。
quit():-如果你在驱动实例上调用quit(),并且有一个或多个浏览器窗口打开,它将关闭所有打开的浏览器窗口,驱动实例将被垃圾收集,即从内存中删除。所以现在你不能使用这个驱动程序实例在调用quit()之后做其他操作。如果你这样做,它将抛出一个异常。
dispose():-我不认为WebDriver实例有dispose方法。
你可以去这个selenium官方java文档链接中参考。
我的理解是driver.close();将关闭当前浏览器, 和driver.quit();将终止所有浏览器
driver.close();
driver.quit();
driver.close() &driver.quit ()
司机。close -关闭设置焦点的浏览器窗口。
司机。quit -它基本上调用driver。dispose方法将关闭所有浏览器窗口并优雅地结束WebDriver会话。
close ()是一个webdriver命令,它关闭当前关注的浏览器窗口。尽管这个方法的名字很熟悉,但WebDriver确实不实现了AutoCloseable接口。
在自动化过程中,如果打开了多个浏览器窗口,那么close()命令将只关闭当前有焦点的浏览器窗口。其余的浏览器窗口将不会关闭。下面的代码可以用来关闭当前浏览器窗口:
辞职()是一个webdriver命令,它调用驱动程序。dispose方法,该方法反过来关闭所有浏览器窗口并终止WebDriver会话。如果我们没有在程序结束时使用quit(), WebDriver会话将不能正常关闭,文件将不能从内存中清除。这可能会导致内存泄漏错误。
如果自动化进程只打开一个浏览器窗口,close()和quit()命令以相同的方式工作。当在自动化过程中打开多个浏览器窗口时,两者的功能将有所不同。
以上参考:点击这里
< >强处理命令 Dispose()应该调用Quit(),看起来确实调用了。但是,它也有同样的问题,在手动关闭PhantomJS之前,任何后续操作都被阻止
Ref 链接
driver.close() &driver.quit()相对于会话ID。
driver.close -关闭设置焦点的浏览器窗口 如果驱动实例在driver.close之后使用,则硒抛出NoSuchSessionException:无效的会话id
driver.quit -它基本上调用驱动程序。dispose方法将关闭所有浏览器窗口并优雅地结束WebDriver会话 如果驱动实例在driver.quit之后使用,则硒抛出NoSuchSessionException:会话id为null
“退出”和“接近”有两个区别。
输入url后相同的会话ID - 73e6d7c2ae55d9f059ad1cce248adb75
After the currentUrl() the session ID - 73e6d7c2ae55d9f059ad1cce248adb75 . > . > the current turl () the session ID - 73e6d7c2ae55d9f059ad1cce248adb75
quit()后浏览器会话ID - null
如果用户试图执行任何语句,会话ID null将发送给服务器。在看到这个时,服务器将发送异常- 会话ID为空。调用quit()后使用WebDriver ?
因此,在quit()中会话为空,在close()中会话id无效。