我正在尝试使用appium&在2个设备上运行并行测试.硒网格,但由于某种原因,它仅在第一台节点服务器(和第一台设备)上运行,而在第二台服务器上什么也没有发生.
另外,如果我关闭第一台服务器并运行测试,那么该测试将在第二台服务器上运行,因此服务器应该没有任何问题.
是否必须提供一些参数才能将其设置为parallel?
谢谢您的帮助 !
这是我的文件:
{
"capabilities":
[
{
"browserName": "SamsungS6",
"deviceName": "04157df40862d02f",
"version":"6.0.1",
"maxInstances": 3,
"platform":"ANDROID"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://localhost:4491/wd/hub",
"host": "localhost",
"port": 4491,
"maxSession": 5,
"register": true,
"registerCycle": 5000,
"hubPort": 4433,
"hubHost": "localhost"
}
}
第二个服务器json文件:
{
"capabilities":
[
{
"browserName": "OnePlusOne",
"deviceName": "14b2b276",
"version":"6.0.1",
"maxInstances": 3,
"platform":"ANDROID",
"platformName":"ANDROID"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://localhost:4490/wd/hub",
"host": "localhost",
"port": 4490,
"maxSession": 5,
"register": true,
"registerCycle": 5000,
"hubPort": 4433,
"hubHost": "localhost"
}
}
运行硒网格:
java -jar selenium-server.jar -role hub -port 4433
运行第一个方案
node.exe node_modules\appium\bin\appium.js --nodeconfig myfirstscenario.json -p 4490 -U 14b2b276 -bp 5490 --chromedriver-port 6490
运行第二种情况
node.exe node_modules\appium\bin\appium.js --nodeconfig mysecondscenario.json -p 4491 -U 04157df40862d02f -bp 5491 --chromedriver-port 6491
考试
@BeforeTest(alwaysRun = true)
public void setUp(){
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "ANDROID");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "");
capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, appPackage);
capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, appActivity);
driver = new AndroidDriver(new URL("http://localhost:4433/wd/hub"), capabilities);
new webdriverwait(driver, 60);
} catch (MalformedURLException e) {
e.printstacktrace();
}
}
@Test
public void test(){
System.out.println("hello world");
try {
sleep(6000);
} catch (InterruptedException e) {
e.printstacktrace();
}
}
@AfterTest(alwaysRun = true)
public void closeDriver(){
driver.quit();
}
解决方法:
问题是因为您既未提供DesiredCapabilities中唯一的内容,也未添加自定义CapabilityMatcher.默认情况下,网格仅使用browserName,版本和平台来决定将测试路由到哪个节点.
这是解决问题的一种方法.将一个名为“ applicationName”的新密钥添加到您的nodeConfig.json中,并分别设置“ OnePlusOne”和“ SamsungS6”的值.然后,将一个名为“ applicationName”的新功能添加到测试中所需的功能,然后分别设置“ OnePlusOne”和“ SamsungS6”的值.之后,您的测试将被路由到正确的设备.