Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Webdriver.ie.driver system property for RemoteWebDriver


(Vedzmak) #1

Доброго времени суток

Возникла необьяснимая проблема:

Ниже обычный код по инициализации веб драйвера

  @BeforeClass

    public WebDriver getWebDriver() {
        DesiredCapabilities capability = null;
        capability = DesiredCapabilities.internetExplorer();
        try {
            driver = new EventFiringWebDriver(new RemoteWebDriver(new URL("- hub name - :4444/wd/hub"), capability));
        } catch (MalformedURLException ex) {
            System.out.println(ex);
        }
        driver.register(new LoggingWebDriverEventListener(this.getClass()));
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.get(BASE_URL);
        Alert alert = driver.switchTo().alert();
        alert.dismiss();
        return driver;
    }
 
 если заменить InternetExplorer в capability на Firefox код отработает без ошибок, но при IE выдает ошибку 
 
getWebDriver()  Time elapsed: 0.846 sec  <<< FAILURE!
org.openqa.selenium.WebDriverException: The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://code.google.com/p/selenium/downloads/list
Command duration or timeout: 235 milliseconds
Build info: version: '2.26.0', revision: '18040', time: '2012-11-02 09:44:45'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_07'
Driver info: driver.version: RemoteWebDriver
 
Никогда не сталкивался с такой при использовании RemoteDriver. При обычном IEdriver можно было добавить
        File file = new File("C:\\Selenium-standalone\\IEDriverServer.exe");
        System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
и это лечило проблему, но для Remote это не подходит.
Может кто сталкивался с такой проблемой?

 


(Mykhailo Poliarush) #2

попробуй передать проперти  webdriver.ie.driver при запуске ноды и сервера

java - jar ... -Dwebdriver.ie.driver=path-to-ieserver ... selenium-server.java ...


(Sergey Korol) #3

Скорее всего дело в неправильно настроенном ноде. Попробуйте такую запись:

java -jar libs/selenium-server-standalone-2.25.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -url http://localhost:5556/wd/hub -remoteHost http://localhost:5556 -browser browserName="internet explorer",version=9,platform=WINDOWS,maxInstances=7,ensureCleanSession=true -maxSession 7 -nodeTimeout 30

Возможно в дальнейшем еще потребуются следующие капабилити:

capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
capability.setBrowserName(browser);
capability.setPlatform(platform);

(Vedzmak) #4

 

Running IEDriverServer.exe Remotely

The HTTP server started by the IEDriverServer.exe sets an access control list to only accept connections from the local machine, and disallows incoming connections from remote machines. At present, this cannot be changed without modifying the source code to the IEDriverServer.exe. To run the Internet Explorer driver on a remote machine, use the Java standalone remote server in connection with your language binding's equivalent of RemoteWebDriver.

 

Судя по этому обзацу из http://code.google.com/p/selenium/wiki/InternetExplorerDriver, для запуска IE на удаленке IEDriverServer.exe вообще не нужен. Достаточно только  standalone remote server (selenium-server-standalone-2.25.0.jar). Мне немного сложно проверить вашт варианты, так как nodes стартует автоматом Jenkins, надо поискать в нем конфигурацию и попробовать там каким-либо образом добавить данную комманду.


(Sergey Korol) #5

Как раз понадобилось поработать с IE на последних либах. К моему удивлению, в 2.26 версии таки нужно подключать IE драйвер. Делается это, как уже написали выше, путем добавления пути к IEDriverServer в тело нода:

-Dwebdriver.ie.driver=path/IEDriverServer.exe

Помимо этого, придется еще установить protected mode для всех зон в настройках IE. Все это дело успешно работает с IE9. Но вот при попытке запустить даже простенький тест на IE8 я столкнулся с проблемой: браузер то открывается, а дальше видим лишь "This is the initial page for the webdriver server". Все, тест не проходит, т.к. не может найти нужных элементов, что логично, ибо даже первая страница не была загружена. Что с этим делать - пока не знаю. Может кто сталкивался?


(Sergey Korol) #6

Проблема решилась. На IE8 стоял гугл тулбар, который мешал работать драйверу. Совершенно случайно заметил, что первая страница прогружалась в маленьком контроле (размером с инпут) гугл тулбара. -4 часа жизни из-за такой неприятной мелочи. :)


(Mykhailo Poliarush) #7

досадно, когда понимаешь, что такая мелочь, а ты из-за нее получаешь кучу головняка