先决条件:
- 了解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
3)现在输入命令: node appium.js -a 127.0.0.1 -p 1234 -cp 1234 -bp 2345
注意到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”:“ - p 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中参数化的下面代码
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
观察两个设备中设备的执行情况。