2015-02-24 85 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