Ответ 1
Я смог решить проблему, понизив уровень безопасности в "Свойствах Интернета" в зоне Интернета от "Высокий" до "Средний-Высокий" или "Средний".
Я не могу заставить 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 здесь как общедоступный тест, но проблема также наблюдается на нашем внутреннем сайте.
Я смог решить проблему, понизив уровень безопасности в "Свойствах Интернета" в зоне Интернета от "Высокий" до "Средний-Высокий" или "Средний".
Для тех, кто сталкивается с проблемой в IE11, вот почему: Microsoft выпустила обновление KB3025390 через Центр обновления Windows [1] как часть обычного цикла обновления "patch вторник". Для большинства пользователей это обновление загружается и устанавливается без взаимодействия с пользователем. Это обновление разбивает IE-драйвер при использовании его с IE11.
https://groups.google.com/forum/m/#!topic/selenium-users/TdY_rRNF-gw
Исправить, удалить обновление. Сейчас нет обновления Selenium, чтобы решить проблему.
Для меня работало решение, указанное в нижней части этой страницы: Запуск локальных HTML-страниц
Чтобы исправить это, перейдите в "Настройки Интернета" в меню "Инструменты" (или значок шестеренки в новых версиях). Откройте вкладку "Дополнительно". Прокрутите страницу вниз до "Безопасность" и выберите "Разрешить запуск активного содержимого в файлах на моем компьютере".
Затем потребовалась перезагрузка.
если вы запускаете IDE в режиме администратора перед запуском теста, он решит проблему. Убедитесь, что среда IDE запущена с правами администратора.
Перейдите в настройки IE > вкладка Безопасность > Отключить защищенный режим для всех зон. эта работа устранила мою проблему.
У меня были проблемы с доступом к нескольким элементам асинхронным. Поместить их в асинхронную функцию и написать "жду", прежде чем каждое утверждение решит это для меня.