Я пытаюсь создать экземпляр InternetExplorerDriver на C # и каждый раз получаю следующее сообщение об ошибке:
System.InvalidOperationException: Непредвиденная ошибка при запуске Internet Explorer. Для защищенного режима должно быть установлено одинаковое значение (включено или отключено) для всех зон. (NoSuchDriver)
Теперь я не знаю, как с этим разобраться, но строка кода, которая вызывает рассматриваемую ошибку:
IWebDriver driver = new InternetExplorerDriver();
Документация для InternetExplorerDriver предлагает мне передать ICapabilities
в перегруженном конструкторе, но он имеет только свойства BrowserName
, IsJavaScriptEnabled
, Платформа
и Версия
. Ни один из них, похоже, не предполагает, что они могут решить проблему.
Есть ли что-то, что мне нужно сделать в реализации, чтобы разобраться в этом? Или мне нужно изменить некоторые настройки в самом IE9?
Для справки, если вы хотите переопределить параметры безопасности, используйте код c #:
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
namespace SeleniumTests
{
[TestFixture]
public class Test
{
private IWebDriver driver;
[SetUp]
public void Setup()
{
var options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
driver = new InternetExplorerDriver(options);
}
}
}
Обновление:
В моем предыдущем ответе использовалась более старая версия Selenium 2.0, теперь я обновил код для работы с Selenium DotNet-2.21.0 и включил правильные пространства имен.
Ответ Aleh решил эту проблему для меня, но я обнаружил, что мне также нужно было указать путь к файлу для местоположения IEDriverServer
. Просто отправлять сообщения на случай, если кто-то столкнется с подобной проблемой.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
namespace SeleniumTest
{
class Program
{
static void Main(string[] args)
{
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IWebDriver driver = new InternetExplorerDriver("C:\\Selenium", options);
driver.Navigate().GoToUrl("http://www.stackoverflow.com");
}
}
}
Я обнаружил, что следующее сработало для меня (ни один из приведенных выше ответов не сработал)
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.SetCapability(InternetExplorerDriver.IntroduceInstabilityByIgnoringProtectedModeSettings, true);
driver = new InternetExplorerDriver(desiredCapabilities);
Я обнаружил, что это сработало, но я также получил «(Неожиданное открытие оповещения)» при попытке запустить тест, который, как оказалось, должен был отключить панель инструментов разработчика IE.