文档概述
appium的原理网上介绍的比较清楚,但是配置过程比较复杂。在这里对简单配置和使用appium运行一次计算器计算做简单总结。
准备工作
appium的运行环境还是比较复杂的,依赖的东西比较多,现总结如下(windows环境):
1、首先安装nodejs(安装命令行版的appium用到);
2、java的jdk;
3、Android的sdk;
4、安装appium server:
可使用命令行安装,但是网络波动比较大,失败次数可能比价多:npm install -g appium
建议直接到:appium.io 下载安装桌面版的服务端。
其他软件有需要再进行安装,简单的运行计算器计算以上软件足以。
代码实现
使用以下命令获取当前打开app的包名和activity名称:
adb shell dumpsys window w |findstr \/ |findstr name=
使用adb device获取设备id(java用)
java版本:
使用开发工具,导入三个jar包,分别是:
代码如下:
public class Demo {
private AppiumDriver driver;
@BeforeClass
public void setup() throws Exception {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.BROWSER_NAME, "");
cap.setCapability("platformName", "Android"); // 指定测试平台
cap.setCapability("deviceName", "0617f727007387cb"); // 指定测试机的ID,通过adb命令`adb
cap.setCapability("platformVersion", "4.4"); // 设置测试机的版本
cap.setCapability("appPackage", "com.android.calculator2"); // 将上面获取到的包名和Activity名设置为值
cap.setCapability("appActivity", ".Calculator");
cap.setCapability("appWaitActivity", "com.android.calculator2.Calculator"); // A new session could not be created的解决方法
cap.setCapability("sessionOverride", true); // 每次启动时覆盖session,否则第二次后运行会报错不能新建session
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); // 固定写法
}
@Test
public void plus() {
// 获取7
driver.findElementById("com.android.calculator2:id/digit7").click();
// 获取+
driver.findElementById("com.android.calculator2:id/plus").click();
// 获取3
driver.findElementById("com.android.calculator2:id/digit3").click();
// 获取=
driver.findElementById("com.android.calculator2:id/equal").click();
}
@AfterClass
public void tearDown() throws Exception {
driver.quit(); //彻底退出程序
}
}
开启服务端:
也可以使用命令行开启(比较卡顿):appium
之后运行plus函数,就会看到测试机自动启动了计算器比计算出3+7的结果,同时服务器还会记录日志。
python版本:
python环境需要安装appium库:
pip install Appium-Python-Client
编写测试代码:
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.find_element_by_id('com.android.calculator2:id/digit7').click()
driver.find_element_by_id('com.android.calculator2:id/plus').click()
driver.find_element_by_id('com.android.calculator2:id/digit3').click()
driver.find_element_by_id('com.android.calculator2:id/equal').click()
driver.quit();
开启服务器,运行python脚本即可。
问题与小结
错误1:
在测试过程中发现错误:
这是由于appium的会话机制不能及时停止,导致第二次运行就会无法连接。
解决办法:
1、桌面版服务器,在设置里面勾选:
2、命令行服务器,添加参数:- -session-override即可
appium - -session-override
3、代码中添加参数
cap.setCapability("sessionOverride", true); // 每次启动时覆盖session,否则第二次后运行会报错不能新建session
错误2:
提示服务器未开启。
错误3:
解决办法:修改配置信息中的手机版本或者设备id
小结1:
在测试过程中发现即使手机锁屏appium也可以直接进行解锁运行4.4。在6.0上面就不可以了,服务器日志提示错误:
不可以在6.0的系统上自动解锁了。