Настройка Remote Webdriver для запуска тестов на удаленном компьютере с использованием Java - PullRequest
10 голосов
/ 12 января 2012

Я пытался настроить удаленный веб-драйвер для запуска моих тестов на удаленном компьютере, так как мое приложение развернуто на моем локальном хосте. Используя Selenium RC, я использовал адрес хоста для запуска этих тестов, и он работал нормально; но у меня возникают проблемы при настройке базового класса с помощью удаленного веб-драйвера. Я попробовал следующий код, но он не сработал. Кстати, у меня были тесты на селен, которые я переносил на удаленный веб-драйвер. Я попробовал webdriver, который работает нормально, но не смог настроить удаленный webdriver для удаленного выполнения. Любая помощь будет оценена.

public static  String base_url = "http://localhost:8084";     
Proxy proxy = new Proxy();     
proxy.setProxyAutoconfigUrl(base_url);
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(CapabilityType.PROXY, proxy);
RemoteWebDriver driver = new RemoteWebDriver(capabilities);
selenium = new WebDriverBackedSelenium(driver, base_url);

Пример кода grid 2, который работает для Firefox, но не работает в IE9

String hubURL = "http://myip:4444/wd/hub";
DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
//capability.setBrowserName("internet explorer");
//capability.setPlatform("WINDOWS");
//capability.setVersion("9.0.4");
WebDriver driver = new RemoteWebDriver(new URL(hubURL), capability);
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
driver.quit(); 

Ошибка, которую я получал, когда это IE9, хотя я указал IE из командного режима с узла:

Exception in thread "main" org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : {platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}
Command duration or timeout: 110 milliseconds
Build info: version: '2.16.1', revision: '15405', time: '2012-01-05 12:23:11'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.38-13-generic', java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:147)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:113)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:435)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:135)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:94)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:102)
at com.main.SelTest.main(SelTest.java:25)
Caused by: org.openqa.grid.common.exception.GridException: Error forwarding the new session cannot find : {platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}
at org.openqa.grid.web.servlet.handler.RequestHandler.process(RequestHandler.java:151)
at org.openqa.grid.web.servlet.DriverServlet.process(DriverServlet.java:81)
at org.openqa.grid.web.servlet.DriverServlet.doPost(DriverServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at org.openqa.jetty.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473)
at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1530)
at org.openqa.jetty.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1482)
at org.openqa.jetty.http.HttpServer.service(HttpServer.java:909)
at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243)
at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

Ответы [ 5 ]

10 голосов
/ 12 января 2012

Вам необходимо установить Selenium Server (концентратор) и зарегистрировать на нем удаленный WebDriver. Затем ваш клиент свяжется с концентратором, который найдет соответствующий WebDriver для выполнения вашего теста.

Вы можете посмотреть здесь для получения дополнительной информации.

2 голосов
/ 13 ноября 2013

Эта проблема возникла у меня из-за того, что .. у меня был сервер с selenium-server-standalone-2.32.0 и клиент, зарегистрированный с selenium-server-standalone-2.37.0 .. Когда я сделал оба selenium-server-standalone-2.32.0 и запустил тогда все работало нормально

0 голосов
/ 28 марта 2015
  • Сначала необходимо создать HubNode (сервер) и запустить HubNode (сервер) из командной строки / приглашения, используя Java: -jar selenium-server-standalone-2.44.0.jar -role hub
  • Затем привязать узел / клиент к этому концентратору с помощью концентратораIP-адрес или имя машины с любым номером порта> 1024.Например, для Node Machine: Java -jar selenium-server-standalone-2.44.0.jar -role webdriver -hub http://HubmachineIPAddress:4444/grid/register -port 5566

Еще одна вещь заключается в том, что всякий раз, когда мы используем Internet Explorer или Google Chrome, мы должны установить: System.setProperty("webdriver.ie.driver",path);

0 голосов
/ 20 февраля 2015

Вот как я избавился от ошибки:

WebDriverException: Ошибка при пересылке нового сеанса не может быть найдена: {платформа = WINDOWS, sureCleanSession = true, browserName = Internet Explorer, версия = 11}

В вашем nodeconfig.json версия должна быть строкой, а не целым числом.

Поэтому вместо использования "version": 11 используйте "version": "11" (обратите внимание на двойные кавычки).

Полный пример рабочего файла nodecondig.json для RemoteWebDriver:

{
  "capabilities":
  [
    {
      "platform": "WIN8_1",
      "browserName": "internet explorer",
      "maxInstances": 1,
      "seleniumProtocol": "WebDriver"
      "version": "11"
    }
    ,{
      "platform": "WIN7",
      "browserName": "chrome",
      "maxInstances": 4,
      "seleniumProtocol": "WebDriver"
      "version": "40"
    }
    ,{
      "platform": "LINUX",
      "browserName": "firefox",
      "maxInstances": 4,
      "seleniumProtocol": "WebDriver"
      "version": "33"
    }
  ],
  "configuration":
  {
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 3,
    "port": 5555,
    "host": ip,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": {your-ip-address}
  }
}
0 голосов
/ 15 мая 2013

По умолчанию InternetExplorerDriver прослушивает порт "5555". Измените свой huburl, чтобы соответствовать этому. Вы можете посмотреть в окне cmd box для подтверждения.

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