В IE: org.openqa.selenium.WebDriverException: обычно это означает, что вызов COM-метода IWebBrowser2::Navigate2() завершился неудачно

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

Обычно это означает, что при вызове метода COM IWebBrowser2::Navigate2() возникла исключительная ситуация.

System.setProperty("webdriver.ie.driver", "browserdrivers/IEDriverServer.exe");
WebDriver web =  new InternetExplorerDriver();
web.get("URL");

Я могу видеть экран IE, но он не переходит по этому URL, и я получаю исключение выше. Как я могу решить это?

3 ответа

Решение

Необходимо настроить параметры защищенного режима для каждой зоны на одно и то же значение в Internet Explorer. Надеюсь, что ссылка ниже может быть полезной для вас.

NoSuchElementException происходит во время реализации InternetExplorerDriver в Selenium WebDriver

С Уважением,

Вигнеш

Я только что столкнулся с этой проблемой сам. Для меня проблема была в том, что мое приложение использует базовую аутентификацию HTTP, и я пытался установить комбинацию имени пользователя и пароля через URL страницы, например: http://username:password@host/path

Проблема в том, что по умолчанию IE не позволяет вам задавать имя пользователя и пароль таким образом (это функция безопасности), и это вызывает вышеуказанную ошибку.

Чтобы это исправить, мне пришлось добавить значение реестра в regedit. В ключе: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE добавить новый DWORD значение с именем iexplore.exe и значение 0, как описано в этом другом ответе /questions/7495605/obyichnaya-proverka-podlinnosti-s-pomoschyu-selenium-v-internet-explorer-10/7495614#7495614

Я решил эту проблему, запустив Internet Explorer вручную. Когда браузер загрузился, мне было предложено диалоговое окно "Настройка Internet Explorer 11". Я выбрал "Использовать рекомендуемые параметры безопасности, конфиденциальности и совместимости" и нажал "ОК".

После закрытия диалогового окна в моем браузере отображалась страница конфигурации под названием "Внимание. Конфигурация усиленной безопасности Internet Explorer не включена" - я проигнорировал это и закрыл браузер и снова попытался успешно запустить тест автоматизации.

Это сообщение об ошибке...

org.openqa.selenium.WebDriverException: This usually means that a call to the COM method IWebBrowser2::Navigate2() failed

... означает, что IEDriverServer не смог инициировать / создать новый контекст просмотра, то есть сеанс браузера Internet Explorer в качестве COM-объекта.


Настройки защищенного режима для Internet Explorer

@JimEvans в статье " Вы делаете это неправильно: IE Protected Mode" и "WebDriver" упоминаются при автоматизации Internet-Explorer через iedriverserver:

Сеанс браузера был представлен одним экземпляром исполняемого файла iexplore.exe. Фреймворк для управления IE может создать экземпляр браузера как COM-объекта с помощью CoCreateInstance() или может легко передать COM-интерфейсы в работающий экземпляр, используя наличие ActiveAccessibility и отправивWM_HTML_GETOBJECTсообщение соответствующему дескриптору окна IE. Как только у инфраструктуры будет указатель на COM-интерфейсы, вы можете быть уверены, что они будут действительны в течение всего срока службы браузера. Это также означало, что вы могли легко присоединяться к событиям, запускаемым браузером через COM-интерфейс DWebBrowserEvents2. Затем появилась комбинация IE 7 и Windows Vista. Чтобы уменьшить поверхность атаки, представляемую вредоносными веб-сайтами, IE 7 представил так называемый защищенный режим., который использовал обязательный контроль целостности в Windows Vista для предотвращения доступа IE, инициированного действиями, обычно инициированными JavaScript, к операционной системе, как это было в предыдущих выпусках. Хотя это в целом было долгожданным событием для большинства пользователей IE, оно создало всевозможные проблемы для автоматизации IE. Когда вы переходите в защищенный режим или выходите из него, например, переходя с внутреннего веб-сайта интрасети на веб-сайт в Интернете, IE должен создать новый процесс, поскольку он не может изменить уровень обязательного контроля целостности существующего процесса. Более того, в версиях IE после 7 не всегда очевидно, что граница защищенного режима была пересечена, поскольку IE пытается представить лучший пользовательский интерфейс, плавно объединяя окно браузера нового процесса с уже открытым окном браузера.Это скрытое переключение процессов также означает, что любые ссылки, указывающие на COM-объекты IE до пересечения границы защищенного режима, остаются указывающими на объекты, которые больше не используются IE после пересечения границы.


Кроме того, необходимо настроить конфигурацию в Internet Explorer Driver четко говорится:

  • В IEDriverServer Exectuable должен быть загружен и помещен в ваш PATH.
  • В IE 7 или более поздних версиях в Windows Vista или Windows 7 необходимо установить одинаковые значения параметров защищенного режима для каждой зоны. Значение может быть включено или выключено, если оно одинаково для каждой зоны. Чтобы установить параметры защищенного режима, выберите "Свойства обозревателя..." в меню "Инструменты" и щелкните вкладку "Безопасность". Для каждой зоны внизу вкладки будет установлен флажок "Включить защищенный режим".

ProtectedModeSettings

  • Кроме того, для IE 10 и более поздних версий необходимо отключить расширенный защищенный режим. Эта опция находится вAdvanced вкладка диалогового окна "Свойства обозревателя".
  • Уровень масштабирования браузера должен быть установлен на 100% так что собственные события мыши могут быть установлены в правильные координаты.
  • Для Windows 10 вам также необходимо установить для параметра Изменить размер текста, приложений и других элементов значение100% в настройках дисплея.
  • Только для IE 11 вам нужно будет установить запись в реестре на целевом компьютере, чтобы драйвер мог поддерживать соединение с экземпляром Internet Explorer, который он создает.
  • Для 32-битных установок Windows ключ, который вы должны проверить в редакторе реестра, это HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.
  • Для 64-битных установок Windows ключ HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.
  • Обратите внимание, что FEATURE_BFCACHEПодключ может присутствовать или отсутствовать, и должен быть создан, если он отсутствует. Внутри этого ключа создайтеDWORD названное значение iexplore.exe со значением 0`.

Решение

Во-первых, вам нужно убедиться, что настройки защищенного режима для каждой зоны имеют одинаковое значение. Кроме того, вам также необходимо обеспечить необходимую конфигурацию для драйвера Internet Explorer.


Ссылки

Вы можете найти пару соответствующих обсуждений в:

Другие вопросы по тегам