使用TestNG运行Appium并行测试

本文介绍了如何利用TestNG和Node.js启动并运行多个Appium服务器实例进行并行测试。详细讲解了启动初始和第二个Appium实例的命令,强调了不同命令参数如地址、端口、callbackPort和BootstrapPort的设置。同时,提到了在TestNG中参数化代码以及通过TestNG.xml文件配置设备信息来实现设备并行测试的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

先决条件:

  • 了解TestNG。请参考TestNG教程
  • Node.js应该安装在机器上。

 

程序:

  • 到目前为止,我们已经在MAC中的Windows / Appium.app中使用Appium.exe启动了Appium。我们将启动/运行Appium,它被分配为仅运行一个实例。
  • 要运行多个实例,我们需要启动/运行多个Appium服务器来执行此操作,我们将使用Node.js的帮助

 

启动初始实例: 

1)现在打开命令提示符 将目录更改为Appium安装位置C:\ Program Files(x86)\ Appium \ node_modules \ appium \ bin
使用TestNG进行Appium并行执行

Appium_TestNg_5
3)现在输入命令:  node appium.js -a 127.0.0.1 -p 1234 -cp 1234 -bp 2345
Appium_TestNg_6

注意到First实例是使用URL:0.0.1:1234 / wd / hub创建的

 

关于命令的描述:

  • Node Appium.js:使用位于该位置的Appium.js的节点启动实例,以提供Appium服务器参数
  • 对于地址,我们必须传递“ -a ”,其地址为“127.0.0.1”:“ - a 127.0.0.1 ”
  • 对于端口,我们必须传递带端口号的“ -p”,端口号为“ 1234”:“ - 1234 ”
  • 对于callbackPort,我们必须传递带有端口号的“ -cp”,端口号为“ 1234”:“ - cy 1234 ”
  • 对于BootstrapPort,我们必须传递带端口号的“ -bp”,端口号为“ 2345”:“ - bp 2345 ”

 

启动第二个实例:

1)按照相同的步骤,但现在打开另一个命令提示符。

2)使用不同的地址,端口,callbackPort和BootstrapPort提供命令,如下所示:node appium.js -a 127.0.0.2 -p 3456 -cp 3456 -bp 4567

3)使用URL:0.0.2:3456 / wd / hub创建第二个实例

现在两个命令提示都运行不同的Appium服务器实例。
Appium_TestNg_7
了解了如何启动多个Appium服务器实例。现在是时候准备好脚本了。

以下是TestNG中参数化的下面代码

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

package appium_Package;

import org.testng.annotations.Test;

import io.appium.java_client.MobileElement;

import io.appium.java_client.android.AndroidDriver;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.Parameters;

import java.io.File;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.annotations.AfterMethod;

public class Appium_TestNG_Sample_One {

private static AndroidDriver<MobileElement> driver;

 

@Test

public void f() {

}

 

@Parameters({ "deviceName_","UDID_","platformVersion_", "URL_" })

@BeforeMethod

public void beforeMethod(String deviceName_,String UDID_,String platformVersion_,String URL_) throws MalformedURLException, InterruptedException {

File classpathRoot = new File(System.getProperty("user.dir"));

File appDir = new File(classpathRoot, "/Apps/Amazon/");

File app = new File(appDir, "in.amazon.mShop.android.shopping.apk");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

capabilities.setCapability("deviceName", deviceName_);

capabilities.setCapability("udid", UDID_);

capabilities.setCapability("platformVersion", platformVersion_);

capabilities.setCapability("platformName", "Android");

capabilities.setCapability("app", app.getAbsolutePath());

capabilities.setCapability("appPackage", "in.amazon.mShop.android.shopping");

capabilities.setCapability("appActivity", "com.amazon.mShop.home.HomeActivity");

driver = new AndroidDriver<MobileElement>(new URL("http://"+URL_), capabilities);

driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);

Thread.sleep(10000);

}

 

@AfterMethod

public void afterMethod() {

}

}

 

现在,这些参数通过两个不同的测试从​​TestNG.xml传递。下面是xml文件。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" parallel="tests" thread-count="2" >

<test name="Test1">

<parameter name="deviceName_" value="device_One"/>

<parameter name="UDID_" value="UDID_One"/>

<parameter name="platformVersion_" value="Version_One"/>

<parameter name="URL_" value="127.0.0.1:1234/wd/hub"/>

<classes>

<class name="appium_Package.Appium_TestNG_Sample_One"/>

</classes>

</test> <!—Test 1 -->

<test name="Test2">

<parameter name="deviceName_" value="device_Two"/>

<parameter name="UDID_" value="UDID_Two"/>

<parameter name="platformVersion_" value="Version_Two"/>

<parameter name="URL_" value="127.0.0.2:3456/wd/hub"/>

<classes>

<class name="appium_Package.Appium_TestNG_Sample_One"/>

</classes>

</test> <!—Test 2 -->

</suite> <!-- Suite -->

 

现在是时候连接两个设备(USB / Wifi)了。确定设备是否与系统连接,“ ADB ”可以通过命令提示符中的以下命令访问它:“ adb devices ”。然后在获取连接设备列表后,记下设备的UDID ,并在testNG.xml中提供设备名称,平台版本和不同实例的URL。

 

现在,它右键单击TestNG.xml-> RunAs-> TestNG Suite

观察两个设备中设备的执行情况。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值