导航到页面后,我无法让Selenium清理干净。 (没有Navigate()。GoToURL(),它很好地撕下了。)我理解Close(),Quit()和Dispose()之间的假设差异。我已经尝试了我能想到的每一种组合。我肯定错过了什么。如果我必须自己关闭它们 - 如果这是解决方案......我真的没有任何线索,但那没关系。我想知道我是否在使用Selenium方面遗漏了一些东西。任何帮助非常感谢。
// no iexplore windows open
IWebDriver f = new InternetExplorerDriver();
f.Navigate().GoToUrl("http://abcdxpq.com");
f.Close();
f.Quit();
f.Dispose();
// iexplore window left open (http://abcdxpq.com)
答案 0 :(得分:0)
查看您的代码我觉得我们需要缩小到一行代码来处理 tearDown()
IEDriverServer
和浏览器 InternetExplorerDriver
。
根据当前的实施, Driver.Dispose();
不应该用于清理WebDriver实例。为了进行适当的清理,我们必须使用 Driver.Quit();
。值得一提的是 Driver.Quit();
在内部调用 Driver.Close();
。
tearDown()
方法比较Driver.Dispose();
:目前已弃用。Driver.Close();
:用于关闭当前页面或具有焦点的浏览器(如果它是唯一的页面/标签)。Driver.Quit();
:用于调用 / shutdown端点,然后 kill {{1} 和 WebDriver
实例完全关闭所有页面/标签/窗口。答案 1 :(得分:0)
弄清楚我做错了什么,或者至少是什么有用 - 我相信Quit()应该关闭所有?无论如何,假设Quit没有完全关闭所有的窗口,我仍然认为实例化然后导航只会创建一个窗口关闭...它显然创建2 :)我的坏。这会把一切都关闭。但也许驱动程序有问题,如果Quit()应该这样做?
IWebDriver f = new InternetExplorerDriver();
f.Close(); // <- this is what I added. this works for me. nothing left open.
f.Navigate().GoToUrl("http://abcdxpq.com");
f.Quit();