如何拆除Selenium(3.8)并关闭IE浏览器窗口?

时间:2017-12-07 21:36:39

标签: c# selenium internet-explorer

导航到页面后,我无法让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)

2 个答案:

答案 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 实例完全关闭所有页面/标签/窗口。

您将在此讨论PhantomJS web driver stays in memory

中获得更详细的讨论

答案 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();