IE 11 - webdriver.Quit() не работает

Я новичок в Selenium и, кажется, падаю на первое препятствие. В то время как я могу с удовольствием закрывать окна браузера в Firefox, то же самое не работает в IE.

См. пример теста ниже, который оставляет меня с одним открытым окном 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();
        }
    }
}

Об аналогичной проблеме сообщается здесь для 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
        }
    }
}

Тем не менее, это кажется очень тяжелой и не лучшей практикой. есть идеи?


person John Reilly    schedule 24.02.2015    source источник
comment
Может ли это быть проблемой Windows 8.1? Я использую ту же настройку, за исключением Windows 7, и она работает для меня.   -  person Saifur    schedule 24.02.2015
comment
Вы все еще видите эту проблему, если вместо этого вы вызываете _iedriver.Close()?   -  person Richard Ev    schedule 24.02.2015
comment
Да, я люблю @RichardEverett. Я пытался использовать Close, Quit и Dispose вместе, но безрезультатно.   -  person John Reilly    schedule 24.02.2015
comment
Это ошибка? Если да, то с чем?   -  person Arran    schedule 24.02.2015
comment
Нет, окно остается упорно открытым и все.   -  person John Reilly    schedule 24.02.2015


Ответы (1)


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

Internet Explorer 11 не закрывается после Selenium Test

person greatkilt    schedule 30.01.2018