设置远程Webdriver以使用Java在远程计算机中运行测试

设置远程Webdriver以使用Java在远程计算机中运行测试,java,selenium,webdriver,Java,Selenium,Webdriver,当我的应用程序部署到本地主机时,我试图设置远程webdriver以在远程计算机上运行测试。使用SeleniumRC,我使用主机地址来运行这些测试,它运行得很好;但是我在使用远程webdriver设置基类时遇到了问题。我尝试了下面的代码,但没有成功。顺便说一句,我有selenium测试,我正在迁移到远程webdriver。我尝试了webdriver,它工作正常,但无法设置远程webdriver以进行远程执行。任何帮助都将不胜感激 publicstaticstringbase\uurl=”http:

当我的应用程序部署到本地主机时,我试图设置远程webdriver以在远程计算机上运行测试。使用SeleniumRC,我使用主机地址来运行这些测试,它运行得很好;但是我在使用远程webdriver设置基类时遇到了问题。我尝试了下面的代码,但没有成功。顺便说一句,我有selenium测试,我正在迁移到远程webdriver。我尝试了webdriver,它工作正常,但无法设置远程webdriver以进行远程执行。任何帮助都将不胜感激

publicstaticstringbase\uurl=”http://localhost:8084";     
Proxy Proxy=新代理();
setProxyAutoConfigure(基本url);
DesiredCapabilities=DesiredCapabilities.internetExplorer();
能力.setCapability(CapabilityType.PROXY,PROXY);
RemoteWebDriver=新的RemoteWebDriver(功能);
selenium=新的WebDriverBackedSelenium(驱动程序,基本url);
示例grid 2代码适用于firefox,但不适用于IE9

String hubURL=”http://myip:4444/wd/hub";
DesiredCapabilities=DesiredCapabilities.internetExplorer();
//能力。setBrowserName(“internet explorer”);
//能力。设置平台(“WINDOWS”);
//能力。设置版本(“9.0.4”);
WebDriver driver=新的RemoteWebDriver(新的URL(hubURL),功能);
驱动程序。获取(“http://www.google.com");
WebElement=driver.findElement(By.name(“q”));
元素。sendKeys(“Cheese!”);
元素。提交();
driver.quit();
虽然我从节点的命令模式中指定了IE,但在IE9时收到错误:

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)
线程“main”org.openqa.selenium.WebDriverException中的异常:转发新会话时出错,找不到:{platform=WINDOWS,ensureCleanSession=true,browserName=internet explorer,version=}
命令持续时间或超时:110毫秒
生成信息:版本:“2.16.1”,版本:“15405”,时间:“2012-01-05 12:23:11”
系统信息:os.name:'Linux',os.arch:'amd64',os.version:'2.6.38-13-generic',java.version:'1.6.0_26'
驱动程序信息:Driver.version:RemoteWebDriver
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.openqa.selenium.remote.ErrorHandler.CreateTrowable(ErrorHandler.java:147)
位于org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:113)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:435)
位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:135)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:94)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:102)
位于com.main.SelTest.main(SelTest.java:25)
原因:org.openqa.grid.common.exception.GridException:转发新会话时出错,找不到:{platform=WINDOWS,ensureCleanSession=true,browserName=internet explorer,version=}
位于org.openqa.grid.web.servlet.handler.RequestHandler.process(RequestHandler.java:151)
位于org.openqa.grid.web.servlet.DriverServlet.process(DriverServlet.java:81)
位于org.openqa.grid.web.servlet.DriverServlet.doPost(DriverServlet.java:67)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
位于org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
在org.openqa.jetty.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473)上
位于org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
位于org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1530)
位于org.openqa.jetty.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
位于org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1482)
位于org.openqa.jetty.http.HttpServer.service(HttpServer.java:909)
位于org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
位于org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
位于org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
位于org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243)
位于org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:357)
位于org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

您必须安装Selenium服务器(集线器)并向其注册远程WebDriver。然后,您的客户机将与Hub对话,Hub将找到一个匹配的WebDriver来执行您的测试


您可以查看以了解更多信息。

默认情况下,InternetExplorerDriver侦听端口“5555”。更改您的huburl以匹配该URL。您可以查看cmd box窗口进行确认。

这个问题是因为。。我使用selenium-server-standalone-2.32.0运行服务器,并使用selenium-server-standalone-2.37.0注册客户端。。当我制作selenium-server-standalone-2.32.0并运行时,一切正常

这就是我消除错误的方法:

WebDriverException:转发新会话时出错,找不到: {platform=WINDOWS,ensureCleanSession=true,browserName=internet 资源管理器,版本=11}

在nodeconfig.json中,版本必须是字符串,而不是整数

因此,不要使用
“version”:11
使用
“version”:“11”
(注意双引号)

RemoteWebDriver的工作NodeDig.json文件的完整示例:

{
  "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}
  }
}
  • 首先,您需要创建HubNode(服务器)并使用Java从命令行/提示符启动HubNode(服务器):
    -jar selenium-Server-standalone-2.44.0.jar-role hub
  • 然后使用任何端口号>102的集线器计算机IPAddress或Name将节点/客户端绑定到此集线器