gpt4 book ai didi

multithreading - Appium并行执行+ TestNG框架问题

转载 作者:行者123 更新时间:2023-11-28 20:51:44 24 4
gpt4 key购买 nike

我刚开始为 appium 创建一个框架。我在尝试创建驱动程序时面临挑战。

开始是这样的

第 1 步:根据线程数和设备,我将在运行时在 TestNG 的@Beforesuite 中创建 appium 服务器。

    cap.setCapability("noReset", "false");
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Dev1");
cap.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
cap.setCapability(MobileCapabilityType.UDID, udid);
//Build the Appium service
builder = new AppiumServiceBuilder();
builder.withIPAddress("127.0.0.1");
builder.usingAnyFreePort();
builder.withCapabilities(cap);
builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
builder.withArgument(GeneralServerFlag.LOG_LEVEL, "error");

appiumservice = AppiumDriverLocalService.buildService(builder);
appiumservice.start();

第 2 步:我将为所有使用

连接的设备获取 appium 服务器 url
appiumservice.getUrl().toString()

现在我拥有所有服务器 URL 和功能。

现在的问题是在 TestNG.xml 中,如果我将 Parallel 和线程数设置为 3,我如何设置在 @BeforeMethod 中以这种方式创建一个 AndroidDriver 对象,每次它应该采用不同的 appium 服务器 url 并执行测试?我的@Beforemethod 和@Aftermethod 应该如何?

谢谢

最佳答案

Pass port and device from testng : 

<suite name="Suite" verbose="1" parallel="tests" thread-count="2">
<parameter name="properties" value="XXX" />
<tests>
<test name="Run on device 1">
<classes>
<parameter name="port" value="4723"/>
<parameter name="device" value="DeviceID1"></parameter>
<class name="com.testScripts.ABC">
<methods>
<include name="test1"/>
</methods>
</class>
</classes>
</test>
<test name="run on device 2">
<classes>
<parameter name="port" value="4724"></parameter>
<parameter name="device" value="DeviceID2"></parameter>
<class name="com.testScripts.ABC">
<methods>
<include name="test1"/>
</methods>
</class>
</classes>
</test>
</tests>
</suite>


Put following annotation in method whrere you are defining your capability ..
@BeforeTest(alwaysRun=true)
@Parameters({"port","device"})
Public void capablities()
{
cap.setCapability("noReset", "false");
cap.setCapability(MobileCapabilityType.DEVICE_NAME, device);
cap.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
cap.setCapability(MobileCapabilityType.UDID, udid);
//Build the Appium service
builder = new AppiumServiceBuilder();
builder.withIPAddress("127.0.0.1");
//use port pass in testng file
// builder.usingAnyFreePort();
builder.withCapabilities(cap);
builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
builder.withArgument(GeneralServerFlag.LOG_LEVEL, "error");

appiumservice = AppiumDriverLocalService.buildService(builder);
appiumservice.start();
}

关于multithreading - Appium并行执行+ TestNG框架问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43857398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com