Не удалось найти элемент в закрытом окне IE 11 с селеном

Я пытаюсь запустить тесты в Internet Explorer 11, работающие с Selenium WebDriver. Код:

System.setProperty("webdriver.ie.driver", "Path/to//IEDriverServer.exe");
        WebDriver driver = new InternetExplorerDriver();
driver.get("www.google.com");
driver.findElement(By.name("q"));

И я получаю эту ошибку:

Запущен сервер InternetExplorerDriver (64-разрядный) 2.46.0.0 Прослушивание в порту 43760 Исключение из потока "main" org.openqa.selenium.NoSuchWindowException: невозможно найти элемент на закрытое окно (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил ни одного stacktrace информация) Продолжительность или таймаут команды: 15 миллисекунд. Информация о сборке: версия: '2.46.0', версия: '61506a4624b13675f24581e453592342b7485d71', время: '2015-06-04 10:22:50 'Системная информация: host:' user1-PC ', ip: '10.0.23.71', os.name: "Windows 7", os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_45' Информация о драйвере: org.openqa.selenium.ie.InternetExplorerDriver Возможности [{browserAttachTimeout = 0, enablePersistentHover = true, ie.forceCreateProcessApi = false, pageLoadStrategy = normal, ie.usePerProcessProxy = false, ignoreZoomSetting = false, handlesAlerts = true, version = 11, platform = WINDOWS, nativeEvents = true, ie.ensureCleanSession = false, elementScrollBehavior = 0, ie.browserCommandLineSwitches =, requireWindowFocus = false, browserName = Internet explorer, initialBrowserUrl = http://localhost: 43760/, принимаетScreenshot = true, javascriptEnabled = true, ignoreProtectedModeSettings = false, enableElementCacheCleanup = true, cssSelectorsEnabled = true, неожиданныйAlertBehaviour = увольнение}] Идентификатор сеанса: 8a5b7ab5-862a-462d-ab4b-929d4ed5b71a *** Информация о элементе: {Using = name, value = q} at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Неизвестно Источник) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Неизвестно Источник) в java.lang.reflect.Constructor.newInstance(Неизвестный источник)   в org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)   в org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)   в org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:605)   в org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:358)   в org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:431)   at org.openqa.selenium.By $ByName.findElement(By.java:300) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:350)   на MySel20Proj.MySel20Proj.App.main(App.java:42)

Я попытался выполнить руководство по настройке https://code.google.com/p/selenium/wiki/InternetExplorerDriver, но по-прежнему не работает. И этот код работает на Firefox и Chrome.

Ответ 1

Попробуйте перейти в "Свойства обозревателя" → "Безопасность" - "Включить защищенный режим" в зонах ВСЕ, либо необходимо проверить или ВСЕ.

введите описание изображения здесь

Ответ 2

Есть два способа:

Способ 1: Настройка INITIAL_BROWSER_URL:

File ieFile = new File("D:\\IEDriverServer_x64_2.53.0\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", ieFile.getAbsolutePath());
DesiredCapabilities ieCaps = DesiredCapabilities.internetExplorer();
ieCaps.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "http://www.bing.com/");
driver = new InternetExplorerDriver(ieCaps);
//some operations on that site
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Ripon Al Wasim");
driver.findElement(By.id("sb_form_go")).click();

Способ 2: Чтобы установить запись реестра на целевом компьютере:
Только для IE 11 вам необходимо установить запись реестра на целевом компьютере, чтобы драйвер мог поддерживать соединение с экземпляром Internet Explorer, который он создает.

Для 32-разрядной Windows: ключ, который вы должны проверить в редакторе реестра, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Для 64-битных окон: ключ HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Обратите внимание, что подраздел FEATURE_BFCACHE может быть или не быть, и должен быть создан, если он отсутствует. Важно. Внутри этого ключа создайте значение DWORD с именем iexplore.exe со значением 0.

Более подробную информацию вы можете найти: https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

Ответ 3

Я столкнулся с одной и той же проблемой, пройдя все возможные решения, наконец, получил ответ. Поверьте, это определенно решит вашу проблему.

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE");

capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);

System.setProperty("webdriver.ie.driver","C://MavenTest//driver//IEDriverServer.exe");

driver = new InternetExplorerDriver();

Ответ 4

Для 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.

Снимок экрана

Ответ 5

Я столкнулся с подобной проблемой. Я столкнулся, когда я запускал свой код в сборке Maven. Здесь, в XML файле POM, у меня была другая версия, тогда как фактический селен был другой версией. Так что просто изменили версию так, чтобы она соответствовала установленной версии. И теперь все работает нормально

Ответ 6

Ripon Al Wasim опубликовал этот URL, который является ключом к работе IE11 с Selenium. https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

У меня была эта настройка:

  • Windows 7 Pro 64 бит
  • IE11 64 бит, последнее, что я нашел
  • Selenium удаленный сервер 2.53.1 64 бит
  • IEDriverServer 2.53.1 64 бит
  • модуль selenium 2.53.1 установлен на 64-битной машине Linux, используемой с 64-битным питоном

скачано отсюда: http://selenium-release.storage.googleapis.com/index.html?path=2.53/

Я должен был следовать руководству и:

  • Установите для расширенного защищенного режима значение "отключено" во всех зонах безопасности, что является обязательным требованием для IE10 и IE11.
  • Добавьте ключ FEATURE_BFCACHE и его DWORD iexplore.exe в реестр
  • Я сделал все используемое программное обеспечение, чтобы быть 64-битным.
  • Убедитесь, что масштабирование в IE установлено на 100%.
  • Убедитесь, что размер текста составляет 100% в настройках дисплея Windows.

Additionaly:

  • Мне пришлось отключить настройки прокси в IE, потому что это мешало Selenium remote server взаимодействовать с IEDriverServer.
  • Я запускаю webdriver с параметром requireWindowFocus установленным в значение true, потому что набор ключей с 64-битным селеном был медленным из-за некоторой проблемы с тайм-аутом (Selenium WebDriver очень медленно печатал в текстовом поле в браузере IE)

И это сработало. Я отклоняюсь от руководства, когда указываю путь к IEDriverServer.exe при запуске автономного сервера, поэтому он не обязательно должен быть в переменной PATH.

Ответ 7

Open Internet Options >> Switch to "Security" Tab
Select the "Internet" Zone and Unselect the Checkbox "Enable Protected Mode".
Apply this and do this for remaining 3 zones viz. "Local intranet", "Trusted sites" and "Restricted sites". After this, close
the Internet Options and Restart Internet Explorer to get these changes reflected.