如何在Selenium网格上运行Safari上的测试用例,其中Windows 10机器作为中心,MAC机器作为节点

如何在Selenium网格上运行Safari上的测试用例,其中Windows 10机器作为中心,MAC机器作为节点,windows,macos,selenium,safari,selenium-grid,Windows,Macos,Selenium,Safari,Selenium Grid,详情: Windows版本:10,64位 MAC:macOS Sierra 10.12.5 Safari:10.1.1 硒:3.4.0 使用以下命令启动Windows计算机上的集线器并成功启动 java -jar selenium-server-standalone-3.4.0.jar -role hub -port 4444 java -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig mac.json 使用以下

详情:

Windows版本:10,64位

MAC:macOS Sierra 10.12.5

Safari:10.1.1

硒:3.4.0

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

java -jar selenium-server-standalone-3.4.0.jar -role hub -port 4444
java -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig mac.json
使用以下命令启动MAC计算机上的节点并成功启动

java -jar selenium-server-standalone-3.4.0.jar -role hub -port 4444
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);
capability = DesiredCapabilities.safari();
driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);

您是否在测试中直接调用Mac节点

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

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

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);
capability = DesiredCapabilities.safari();
driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);

谢谢你的回复。mac.json和Java代码中定义的功能导致了问题,删除了Java代码中的功能,工作正常。@Aparna-您可能想回答问题,然后也接受它,这样问题就可以解决了。