Не удается найти какие-либо элементы в Selenium с помощью драйвера Internet Explorer

Я не могу заставить Selenium идентифицировать любые элементы с драйвером Internet Explorer независимо от используемой страницы или типа выбора.

String iedriver = "C:\\selenium-server\\IEDriverServer.exe";
System.setProperty("webdriver.ie.driver", iedriver);
WebDriver driver = new InternetExplorerDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.xpath("//body"));

Выбор по xpath дает org.openqa.selenium.InvalidSelectorException: Выражение xpath '//body' не может быть оценено или не выполняется в WebElement. Другие типы выбора также терпят неудачу:

WebElement element = driver.findElement(By.cssSelector("body"));

или

WebElement element = driver.findElement(By.tagName("body"));

или

 WebElement element = driver.findElement(By.name("q"));

С помощью CSS Selector, Name или Tag Name всегда вызывается org.openqa.selenium.NoSuchElementException

Все настройки отлично работают с Firefox Driver, драйвером Chrome и даже драйвером Html Unit.

Браузер правильно запускается, и страница загружается так, как ожидалось. driver.getCurrentUrl(); и driver.getPageSource(); возвращают ожидаемые значения.

Я попытался ввести явные и неявные ожидания перед тем, как выбрать элемент, но без эффекта, используя

Thread.sleep(10000); 

или

WebDriverWait(driver,60).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//body")));

Также попытался выполнить код, чтобы вручную дождаться появления элементов.

Другие вещи, которые я пытался включить: 1) установка параметров безопасности на один уровень во всех зонах; 2) отключение Enhanced Protected Mode 3) установка FEATURE_BFCACHE в реестре

Я использую Selenium и IEDriverServer версии 2.41. Проблема наблюдается как локально, так и удаленно. Окружающая среда находится на 64-разрядной версии Windows 7, используя 64-разрядные 64-разрядные и 64-разрядные версии IEDriverServer. Та же проблема была обнаружена на 32-разрядной версии IE11, используя 32-разрядную версию IEDriverServer. Я использовал www.google.com здесь как общедоступный тест, но проблема также наблюдается на нашем внутреннем сайте.

Ответ 1

Я смог решить проблему, понизив уровень безопасности в "Свойствах Интернета" в зоне Интернета от "Высокий" до "Средний-Высокий" или "Средний".

Ответ 2

Для тех, кто сталкивается с проблемой в IE11, вот почему: Microsoft выпустила обновление KB3025390 через Центр обновления Windows [1] как часть обычного цикла обновления "patch вторник". Для большинства пользователей это обновление загружается и устанавливается без взаимодействия с пользователем. Это обновление разбивает IE-драйвер при использовании его с IE11.

https://groups.google.com/forum/m/#!topic/selenium-users/TdY_rRNF-gw

Исправить, удалить обновление. Сейчас нет обновления Selenium, чтобы решить проблему.

Ответ 3

Для меня работало решение, указанное в нижней части этой страницы: Запуск локальных HTML-страниц

Чтобы исправить это, перейдите в "Настройки Интернета" в меню "Инструменты" (или значок шестеренки в новых версиях). Откройте вкладку "Дополнительно". Прокрутите страницу вниз до "Безопасность" и выберите "Разрешить запуск активного содержимого в файлах на моем компьютере".

Затем потребовалась перезагрузка.

Ответ 4

если вы запускаете IDE в режиме администратора перед запуском теста, он решит проблему. Убедитесь, что среда IDE запущена с правами администратора.

Ответ 5

Перейдите в настройки IE > вкладка Безопасность > Отключить защищенный режим для всех зон. эта работа устранила мою проблему.

Ответ 6

У меня были проблемы с доступом к нескольким элементам асинхронным. Поместить их в асинхронную функцию и написать "жду", прежде чем каждое утверждение решит это для меня.