繁体   English   中英

设置硒网格以使用Microsoft Edge

[英]Setting up selenium grid to use Microsoft edge

环境:

  • win10(内部版本10240)
  • Vaadin Testbench 4.1
  • 硒2.53
  • Firefox,Chrome,IE11和Edge的驱动程序,用于内部版本10240

节点和集线器

启动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节点-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}]

硒网格控制台-缺少边缘

一切都可以在其他浏览器上正常运行,但不能与Edge一起运行。 任何想法如何解决?

这里有两个问题:

首先,如果您查看默认的节点配置,您会注意到默认情况下仅启用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 params将整个配置放在命令行中)

从理论上讲这应该起作用。 但是在实践中,您经常会遇到第二个问题,即:“有时它随机地不起作用”;]最初,一切都会看起来很好:您的网格将在控制台上正确报告Edge浏览器功能,它将正确地委托测试到包含Edge的节点上,该节点将正确启动Edge浏览器,但是浏览器有时会冻结在带有e徽标的初始蓝屏上,几秒钟后,您将在客户端遇到一些异常,而没有任何有意义的堆栈跟踪或消息(我没有将其保存到任何位置以粘贴到此处)。

有人建议一种解决方法,以在同一台计算机上(当然在不同端口上)启动2个单独的节点:一个仅用于Edge,另一个用于IE,FF和Chrome。 这样,它似乎就可以稳定运行(在运行于win-10和Selenium-3.4.0的Edge build 15063上进行了测试)

附加信息:

除上述以外,Edge驱动程序具有一些限制,这些限制要求配置中的特定解决方法:

  • 当前,驱动程序/浏览器仅支持1个并发会话,因此必须将maxInstances设置为1( 对此答案表示 maxInstances
  • 该驱动程序必须在前台运行,以便浏览器窗口可以实际显示在桌面上。 因此,无法在启动时以Windows服务或Windows Task Scheduler的形式启动该节点。 自动化启动节点的最佳方法是配置自动登录并将批处理脚本添加到用户的“启动程序”中,如我的文章所述。

尝试将-D参数放在-jar参数之前。 我有一个问题,它认为-Dwebdriver .....是硒本身而不是Java的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM