如何使用 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);
详情:
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);