it-roy-ru.com

Настройка Remote Webdriver для запуска тестов на удаленном компьютере с использованием Java

Я пытался настроить удаленный веб-драйвер для запуска моих тестов на удаленном компьютере, поскольку мое приложение развернуто на моем локальном хосте. Используя Selenium RC, я использовал адрес хоста для запуска этих тестов, и он работал нормально; но у меня возникают проблемы при настройке базового класса с помощью удаленного веб-драйвера. Я попробовал следующий код, но он не сработал. Кстати, у меня были тесты Selenium, которые я переносил на удаленный веб-драйвер. Я попробовал 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)
10
Reaz Patwary

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

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

8
Grooveek

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

2
Vishwaradhya Hiremath

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

WebDriverException: Ошибка пересылки нового сеанса не может найти: {platform = 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
Cagy79
  • Сначала вам нужно создать 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
Avinash Pande

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

0
user2383377