参考文档:https://anikikun.gitbooks.io/appium-girls-tutorial/content/start_appium_server.html
https://qaseven.github.io/2016/05/05/appium/
此处单机并发是指:在多台手机上同时执行一个测试脚本
测试应用:android移动端App
测试方向:基于界面的自动化测试
测试工具:appium+java+eclipse
实现目标:使用appium实现同一个case在两台android设备上同时运行
-开始-
能够使用appium编写、运行测试用例后,又面临了另一个问题,即如何将编写的case同时在多个设备上运行呢?这样可以达到兼容不同机型的目的,于是开始google和baidu,各种资料看过之后,先实现了最最基本的单机并发测试(将同一个case在多个设备上运行)
-过程-
1、 启动Appium Server
要实现多个设备同时运行,必须开启多个appium server,且每一个appium server对应一个设备。(从图形化界面启动appium,无法达到两个同时启动两个,所以要在命令行启动server,通过打开多个命令终端,每个终端启动一个server即可)
我的电脑是mac,appium的启动文件存放路径包括两种,
appium1.5.3,运行:/Applications/Appium.app/Contents/Resources/node_modules/appium/build/lib/main.js
appium1.5.3之前版本,运行/Applications/Appium.app/Contents/Resources/node_modules/appium/bin/
由于我的appium版本是1.5.3,所以在两个终端分别输入以下命令,从而启动两个appium server:
$/Applications/Appium.app/Contents/Resources/node_modules/appium/build/lib/main.js -p 4723 -bp 4724 -U LE67A06110254732
$/Applications/Appium.app/Contents/Resources/node_modules/appium/build/lib/main.js -p 4725 -bp 4726 -U 55dd55cb
注:4723和4725分别是启动的appium server端口号,LE67A06110254732是设备id,可以通过adb devices获取到
4724和4726分别是启动的bootstrap端口号,55dd55cb是设备id
2、 验证端口号是否开启成功
在浏览器输入http://127.0.0.1:4723/和http://127.0.0.1:4725/,给出如下响应,则表明成功
3、开始写自动化脚本
关键点:定义两个设备参数,然后
@BeforeTest
public void setUp() throws MalformedURLException {
// Created object of DesiredCapabilities class.
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "55dd55cb"); //设备一
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "被测程序包名");
capabilities.setCapability("appActivity", "被测程序启动方法");
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
DesiredCapabilities capabilities2 = new DesiredCapabilities();
capabilities2.setCapability("deviceName", "LE67A06110254732"); // 设备二
capabilities2.setCapability("platformName", "Android"); // 手机平台
capabilities2.setCapability("appPackage", "被测程序包名"); // app包名
capabilities2.setCapability("appActivity", "被测程序启动方法"); // app启动方法
driver2 = new AndroidDriver<>(new URL("http://127.0.0.1:4725/wd/hub"), capabilities);
driver2.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
4、运行测试用例
点击eclipse上方运行,即可看到该用例在两台android设备上同时执行,见附件视频