环境:
节点和集线器
启动java -jar c:\ users \ powder \ vaadin-testbench-standalone-4.1.0.jar -role hub
启动java -jar c:\ users \ powder \ vaadin-testbench-standalone-4.1.0.jar -role node -Dwebdriver.edge.driver = c:\ users \ powder \ MicrosoftWebDriver.exe
在java代码中使用
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName(DesiredCapabilities.edge().getBrowserName());
//DesiredCapabilities capabilities = DesiredCapabilities.edge(); Tried as well
capabilities.setCapability("acceptSslCerts", "true");
setDriver(new RemoteWebDriver(new URL(this.remoteHubUrl), capabilities));
getDriver().get("http://www.google.com");
错误消息
转发新会话时出错无法找到:功能[{acceptSslCerts = true,browserName = MicrosoftEdge}]
Selenium grid console - edge is missing
其他浏览器一切正常,但Edge没有。任何想法如何解决?
答案 0 :(得分:4)
这里有两个问题:
首先,如果您查看the default node config,您会注意到默认情况下只启用了Firefox,Chrome和IE(这就是为什么您需要使用它们通过系统属性指定驱动程序位置) 。如果你想使用任何其他浏览器,那么你需要使用自己的json配置:
{
"capabilities": [
{
"browserName": "MicrosoftEdge",
"platform": "WIN10",
"maxInstances": 1
},
{
"browserName": "firefox",
"platform": "WIN10",
"maxInstances": 5
},
{
"browserName": "chrome",
"platform": "WIN10",
"maxInstances": 5
},
{
"browserName": "internet explorer",
"platform": "WIN10",
"maxInstances": 1
}
],
"hub": "http://selenium-hub-host:4444"
}
并将其传递给您的命令行:
java "-Dwebdriver.edge.driver=c:\path\to\MicrosoftWebDriver.exe" "-Dwebdriver.gecko.driver=c:\path\to\geckodriver.exe" "-Dwebdriver.chrome.driver=c:\path\to\chromedriver.exe" "-Dwebdriver.ie.driver=c:\path\to\IEDriverServer.exe" -jar "c:\path\to\selenium-server-standalone.jar" -role node -nodeConfig "c:\path\to\the\above.json"
(顺便说一句:或者您也可以使用多个-capabilities
或-browser
参数将整个配置放在命令行中)
这在理论上应该有效。然而在实践中,你经常遇到第二个问题,即:"有时它随机地不起作用" ;]最初一切都会好看:你的网格将在控制台上正确报告Edge浏览器功能,它会正确地将测试委托给包含Edge的节点,该节点将正确启动Edge浏览器,但浏览器有时会冻结其初始蓝屏使用e徽标,几秒钟之后,您将在客户端获得一些例外而没有任何有意义的堆栈跟踪或消息(我现在没有将其保存到任何地方以便粘贴到此处)。
有些人建议workaround在同一台机器上启动2个独立的节点(当然是在不同的端口上):一个仅用于Edge,第二个用于IE,FF和Chrome。这种方式看起来非常稳定(在win-10和Selenium-3.4.0上运行的Edge build 15063上测试)
其他信息:
除上述内容外,Edge驱动程序的限制很少,需要在配置中进行特定的解决方法:
maxInstances
必须设置为1(荣誉为this answer)答案 1 :(得分:0)
尝试将-D参数放在-jar参数之前。我有一个问题,它认为-Dwebdriver .....是selenium本身而不是java的参数。