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

Error when passing IE version to 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 版本时,测试可以 运行,所以问题一定在那里 - 这里失败的原因是什么?

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

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

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

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

我想通了。

注册节点为浏览器版本时,需要将浏览器参数集用引号括起来。我的新节点启动命令是:

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"