2015-02-24 124 views
4

我是全新的硒,似乎是在第一个障碍下降。虽然我可以在Firefox中很高兴地关闭浏览器窗口,但IE浏览器无法正常工作。IE 11 - webdriver.Quit()不起作用

见例如测试下面这让我在每次运行时一个打开的IE窗口:

using Microsoft.VisualStudio.TestTools.UnitTesting; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.IE; 

namespace TestingTesting123 
{ 
    [TestClass] 
    public class About 
    { 
     IWebDriver _ieDriver; 
     IWebDriver _ffDriver; 

     [TestInitialize] 
     public void Startup() 
     { 
      _ffDriver = new FirefoxDriver(); // Closes 
      _ieDriver = new InternetExplorerDriver(); // Doesn't 
     } 

     [TestMethod] 
     public void Go_to_bbc() 
     { 
      _ffDriver.Url = "http://news.bbc.co.uk"; 
      _ieDriver.Url = "http://news.bbc.co.uk"; 
     } 

     [TestCleanup] 
     public void Cleanup() 
     { 
      _ffDriver.Quit(); 
      _ieDriver.Quit(); 
     } 
    } 
} 

有一个类似的问题报告here的Java - 我似乎有同样的问题,但C#。

我在Windows 8.1上使用IE 11。我可以通过这样做来解决这个问题:

using System.Diagnostics; 
using System.Linq; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.IE; 

namespace TestingTesting123Workaround 
{ 
    [TestClass] 
    public class About 
    { 
     IWebDriver _ieDriver; 
     IWebDriver _ffDriver; 
     int[] _startupIEProcessIds; 

     [TestInitialize] 
     public void Startup() 
     { 
      _startupIEProcessIds = Process.GetProcessesByName("iexplore") 
              .Select(x => x.Id).ToArray(); 

      _ffDriver = new FirefoxDriver(); 
      _ieDriver = new InternetExplorerDriver(); 
     } 

     [TestMethod] 
     public void Go_to_bbc() 
     { 
      _ffDriver.Url = "http://news.bbc.co.uk"; 
      _ieDriver.Url = "http://news.bbc.co.uk"; 
     } 

     [TestCleanup] 
     public void Cleanup() 
     { 
      _ffDriver.Quit(); 
      _ieDriver.Quit(); 

      foreach (var ieDriver in Process.GetProcessesByName("IEDriverServer")) 
       ieDriver.Kill(); 
      foreach (var ie in Process.GetProcessesByName("iexplore") 
             .Where(x => !_startupIEProcessIds.Contains(x.Id))) 
       ie.Kill(); // Typing that was oddly therapeutic 
     } 
    } 
} 

但是,这看起来非常沉重,并不是最佳实践。有什么想法吗?

+0

它可以是Windows 8.1的问题吗?我使用相同的设置,除了Windows 7,它正在为我工​​作 – Saifur 2015-02-24 13:55:32

+0

如果您改为调用'_iedriver.Close()',你还会看到这个问题吗? – 2015-02-24 13:55:46

+1

是的,我在@RichardEverett。我试过使用关闭,退出和处置全部无效 – 2015-02-24 14:16:56

回答

0

你可能想尝试一下,因为退出/关闭应该工作。 这可能是因为IE目前有一个bug会在稍后被修复,但同时这可能会有所帮助。过去我曾遇到类似于Chrome驱动程序和Firefox的问题。

Internet Explorer 11 does not close after Selenium Test

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/18668810) – themaninthesuitcase 2018-01-30 15:12:03