2015-02-24 3 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#.

Я использую IE 11 на Windows 8.1. Я могу решить эту проблему, выполнив следующие действия:

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' проблема? Я использую то же самое настроение, кроме окна 7, и оно работает для меня – Saifur

+0

Вы все еще видите эту проблему, если вместо этого вы вызываете '_iedriver.Close()'? –

+1

Да, я делаю @RichardEverett. Я пробовал использовать Close, Quit и Dispose все вместе безрезультатно –

ответ

0

Возможно, вы захотите попробовать, так как бросить/закрыть должно было работать. Возможно, в IE есть ошибка, которая будет исправлена ​​в более поздней точке, но в то же время это может быть полезно. У меня были аналогичные проблемы с драйвером chrome и firefox в прошлом.

Internet Explorer 11 does not close after Selenium Test

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18668810) – themaninthesuitcase

Смежные вопросы