NoSuchElementException возникает во время реализации InternetExplorerDriver в Selenium WebDriver - PullRequest
16 голосов
/ 02 сентября 2011

В настоящее время я работаю над WebDriver, чтобы вызвать браузер IE для запуска тестирования.Но я получил NoSuchElementException, когда попытался запустить простой пример, приведенный ниже.

Тем не менее, код работал нормально, если я использовал Chrome Driver или Firefox driver.Любая идея или мысль будут оценены.

Jar: selenium-server-standalone-2.5.0.jar

Код:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public static void main(String[] args) throws InterruptedException {
  DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
  ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
  WebDriver driver = new InternetExplorerDriver(ieCapabilities);
  driver.get("www.google.com");
  driver.findElement(By.name("q"));
}

Сообщение об ошибке:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to find element with name == q (WARNING: The server did not provide any stacktrace information)
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.5.0', revision: '13516', time: '2011-08-23 18:29:57'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_25'
Driver info: driver.version: RemoteWebDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:197)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:246)
    at org.openqa.selenium.By$ByName.findElement(By.java:298)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:189)
    at lib.WebDriver2.main(WebDriver2.java:14)

Ответы [ 3 ]

14 голосов
/ 07 октября 2011

Вы явно избежали необходимости устанавливать настройки защищенного режима IE.Это то, что делает настройка возможностей InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS.Когда вы удаляете этот параметр и устанавливаете параметры защищенного режима, как описано в вики project wiki , кажется, что проблема решается сама собой.

5 голосов
/ 03 сентября 2011

Попробуйте добавить неявное ожидание, как показано ниже. Также, как сказал Роберт, ваш URL должен иметь http://

WebDriver driver = new InternetExplorerDriver(ieCapabilities);
driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
2 голосов
/ 28 октября 2011

На веб-сайте проекта была короткая запись FAQ (скопировано около Selenium 2.9):

Для InternetExplorerDriver требуется, чтобы для всех доменов безопасности было установлено одинаковое значение (либодоверенный или недоверенный) Если вы не можете изменять домены безопасности, то вы можете переопределить проверку следующим образом:

DesiredCapabilities capabilities =
DesiredCapabilities.internetExplorer();
capabilities.set(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
true); 
WebDriver driver = new InternetExplorerDriver(capabilities);

Как можно сказать по имени константы, это может привести кСлабость в ваших тестах.Если все сайты находятся в одном и том же домене защиты, у вас должно быть все в порядке.

Параллельное сообщение C # InvalidOperationException:

Неожиданная ошибка при запуске Internet Explorer.Защищенный режим должен быть установлен на одно и то же значение (включено или отключено) для всех зон.(NoSuchDriver)

и C # вместо настройки параметров IE (лучшая догадка на февраль 2016 года):

var ieOptions = new OpenQA.Selenium.IE.InternetExplorerOptions {
                IntroduceInstabilityByIgnoringProtectedModeSettings = true };
using (var driver = new InternetExplorerDriver(ieOptions))
{

Все это было частью выпуска 1795 на трекере Selenium.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...