将IE版本传递给Selenium Grid时出错

时间:2016-02-23 18:06:09

标签: selenium selenium-grid

我正在尝试将一个简单的测试传递给我的Selenium网格,同时指定运行测试的IE版本。

我已经开始了这样的节点:

java -jar selenium-server-standalone-2.52.0.jar -role webdriver -hub http://192.168.1.201:4444/grid/register -browserName="internet explorer",version=10.0,platform=WINDOWS -Dwebdriver.ie.driver=C:\IEDriverServer.exe

我看到节点注册到版本为10的集线器,看起来没问题。 然后我开始我的测试:

IWebDriver driver;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities = DesiredCapabilities.InternetExplorer();
capabilities.SetCapability(CapabilityType.BrowserName, "internet explorer");
capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
capabilities.SetCapability(CapabilityType.Version, "10.0");

driver = new RemoteWebDriver(new Uri("http://192.168.1.201:4444/wd/hub"), capabilities);

但我收到错误:

Result Message: 
System.InvalidOperationException : Error forwarding the new session
cannot find : Capabilities [{platform=WINDOWS, browserName=internet explorer, version=10.0}]
TearDown : System.NullReferenceException : Object reference not set to an instance of an object.

当我没有指定IE版本时,测试可以运行,所以问题必须在那里 - 这里失败了什么?

2 个答案:

答案 0 :(得分:0)

我认为浏览器版本应该是" 10"没有" .0":

capabilities.SetCapability(CapabilityType.Version, "10");

您也不需要两次初始化DesiredCapabilities,然后再次更改设置。您可以将它们设置为constructor中的正确值,因此5行会折叠为1:

 DesiredCapabilities capabilities = new DesiredCapabilities( "internet explorer", "10", new Platform(PlatformType.Windows) );

答案 1 :(得分:0)

我明白了。

将节点注册为浏览器版本时,必须包围使用引号设置的浏览器参数。我的新节点启动命令是:

java -Dwebdriver.ie.driver=C:\IEDriverServer.exe -Dwebdriver.chrome.driver=C:\chromedriver.exe -jar selenium-server-standalone-2.52.0.jar -port 5555 -role node -hub http://192.168.1.201:4444/grid/register -browser "browserName=firefox, maxInstances=10, platform=ANY, seleniumProtocol=WebDriver" -browser "browserName=internet explorer, version=10, platform=WINDOWS, maxInstances=10" -browser "browserName=chrome,version=ANY,maxInstances=10,platform=WINDOWS"