如何使用 Windows 10 台机器作为集线器和 MAC 台机器作为节点在 Selenium Grid 上的 Safari 上 运行 测试用例

How to run test cases on Safari on Selenium Grid with Windows 10 machine as hub and MAC machine as node

详情:

Windows 版本: 10、64 位

MAC: macOS Sierra 10.12.5

野生动物园: 10.1.1

硒:3.4.0

使用以下命令在 Windows 机器上启动集线器并成功启动

java -jar selenium-server-standalone-3.4.0.jar -role hub -port 4444

使用以下命令在 MAC 机器上启动节点并成功启动

java -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig mac.json

mac.json内容为

{
  "capabilities":
  [
    {
      "browserName": "safari",
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "firefox",
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "internet explorer",
      "maxInstances": 1,
      "seleniumProtocol": "WebDriver"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": 5555,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://192.101.3.23:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {}
}

Selenium Java 调用浏览器的代码是

capability = DesiredCapabilities.safari();
capability.setBrowserName("safari");
capability.setPlatform(Platform.MAC);
SafariOptions options = new SafariOptions();
options.setUseCleanSession(true);
capability=DesiredCapabilities.safari();
capability.setCapability(SafariOptions.CAPABILITY, options);
capability.setPlatform(Platform.ANY);

driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);

在 Safari 浏览器上执行以下行

driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);

抛出异常

java.lang.reflect.InvocationTargetException

我无法继续进行,我是否遗漏了什么,是什么不允许我继续进行,请有人帮忙。

更新了 Selenium Java 代码如下,并且工作正常

capability = DesiredCapabilities.safari();
driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);

你在测试中直接调用 Mac-Node 吗?

我没有测试它,但如果我理解正确,你必须调用集线器。然后集线器管理对节点的调度。

所以你的电话应该是这样的:

driver=new RemoteWebDriver(new URL(http://192.101.3.23:4444/wd/hub),capability);

更新了 Java 调用浏览器的代码,并且工作正常

capability = DesiredCapabilities.safari();
driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);