java - 我的 appium 测试在一台设备上运行了两次,但我需要在两台设备上并行运行它
问题描述
我正在尝试并行运行我的 appium 测试。我已经配置了 selenium 网格并通过 appium 命令注册了我的节点。我有两台测试设备(模拟器)正在运行,每当我尝试运行测试时,它都会在两台设备上启动应用程序,但在其中一台设备上运行两次测试。这是我的@BeforeMethod
代码:
@BeforeMethod
@Parameters({"deviceName", "platformVersion"})
public void beforeTest(String deviceName, String platformVersion) throws IOException, InterruptedException {
prop = new GeneralProperties();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformVersion", platformVersion);
capabilities.setCapability("platformName", prop.getPlatformName());
capabilities.setCapability("deviceName", deviceName);
capabilities.setCapability("appPackage", prop.getAppPackage());
capabilities.setCapability("appActivity", prop.getAppActivity());
capabilities.setCapability("automationName", "uiautomator2");
capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
driver = new AndroidDriver<MobileElement>(new URL(prop.getUrl()), capabilities);
driver.manage().timeouts().implicitlyWait(prop.getImplicitWait(), TimeUnit.SECONDS);
wait = new WebDriverWait(driver, 10);
} else if (deviceName.equals("emulator-5556")) {
// read data from properties file and set capabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformVersion", platformVersion);
capabilities.setCapability("platformName", prop.getPlatformName());
capabilities.setCapability("deviceName", deviceName);
capabilities.setCapability("appPackage", prop.getAppPackage());
capabilities.setCapability("appActivity", prop.getAppActivity());
capabilities.setCapability("automationName", "uiautomator2");
capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
driver = new AndroidDriver<MobileElement>(new URL(prop.getUrl()), capabilities);
driver.manage().timeouts().implicitlyWait(prop.getImplicitWait(), TimeUnit.SECONDS);
wait = new WebDriverWait(driver, 10);
}
drivers.set(driver);
}
这是我的testng.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<test name="Emulator">
<parameter name="deviceName" value="emulator-5554"/>
<parameter name="platformVersion" value="10"/>
<classes>
<class name="com.test.Login.VerifyValidLogin_Regression"></class>
</classes>
</test> <!-- Test -->
<test name="Emulator_2">
<parameter name="deviceName" value="emulator-5556"/>
<parameter name="platformVersion" value="9"/>
<classes>
<class name="com.test.Login.VerifyValidLogin_Regression"></class>
</classes>
</test> <!-- Test -->
我没有收到任何错误,但我已经为此苦苦挣扎了一段时间
解决方案
你真的很亲密。您只是缺少套件标签,因为您正在并行运行测试,您正在运行一个套件,所以它应该看起来像这样
<suite name="suitename" parallel="tests" thread-count="2">
<test name="Emulator">
<parameter name="deviceName" value="emulator-5554"/>
<parameter name="platformVersion" value="10"/>
<classes>
<class name="com.test.Login.VerifyValidLogin_Regression"></class>
</classes>
</test> <!-- Test -->
<test name="Emulator_2">
<parameter name="deviceName" value="emulator-5556"/>
<parameter name="platformVersion" value="9"/>
<classes>
<class name="com.test.Login.VerifyValidLogin_Regression"> . </class>
</classes>
</test> <!-- Test -->
</suite>
线程数将是您在案例 2 中一次运行的设备数,但如果您有更多更少的设备,只需更改线程数
推荐阅读
- c# - 为什么 C# 编译器认为我在使用可为空的 long 时尝试使用 sbyte 重载?
- spring - Spring Batch,在 writer 中获取 stepExecution?
- swift - 在 CollectionView 中拖放:PBItemCollectionServicer 连接断开
- r - 如何将非 R 对象与 R 对象一起“序列化”
- reactjs - 将 p5.Sound 导入/使用到 React
- jmeter - 从 Jmeter 中的 CSV 文件读取问题
- vba - Excel VBA:根据单元格值添加/删除行;Offset() 的问题
- computer-vision - 用 OpenCV 将人脸与人脸照片区分开来
- java - 从 for 循环中检索特定值
- java - 客户端发送JSP页面请求后.class文件是否被删除?