Appium自动化测试框架
1、Appium简介
1.1 Appium概念
Appium是一个开源的移动端自动化测试工具,适用于移动端原生APP、移动Web APP或混合APP的自动化测试;
Appium继承了Selenium(Web端自动化测试工具),应用WebDriver(JSON wire protocol)技术,借助操作系统自带的测试框架来驱动Android和IOS应用。
特点:Appium是一个开源、跨平台、多语言支持、接口统一,适用于原生app、Web app或混合移动app的自动化测试工具;
理念:旨在满足移动端自动化测试需求;
架构:C/S (C客户端:测试脚本,S服务端:Appium);
多语言支持:语言库包含Java、Ruby、Python、php、JavaScript、C#、RobotFramework;
开源:主要依赖selenium提供的WebDriver技术;
跨平台:支持Linux/IOS mac/Windows平台,适用于Android/IOS应用测试;
术语 | 定义 |
---|---|
Appium | 一般说的是命令行操作的无界面的Web服务器 |
Appium GUI/Appium Desktop | 有图形界面:2015年之前命名为Appium Server,之后命名为Appium desktop,包含server和inspector工具 |
Appium Client | 客户端程式(测试脚本) |
1.2 Appium工作原理
Appium基于web Driver协议,利用Bootstrap.jar,最后调用UIAutomator命令实现APP自动化测试。
工作原理:测试代码发送给appium server,server解析指令后调用平台的SDK(IOS:instruments;Android:uiautomator),通过SDK连接设备,并向设备发送指令和接收设备返回的数据。执行的测试脚本会转成JSON数据,通过http请求发送给Appium server,Appium server将请求转换成command,发送给平台工具SDK(IOS:instruments; Android:uiautomator) ;在设备上查找Appium推送上来的bootstrap.jar(bootstrap.jar是Appium架构放在手机端的一个服务器)来执行这些命令,执行完成后,客户端将结果和log发送回Appium server。
APPium客户端安装
运行appium-desktop-Setut.exe
默认安装即可
Appium-python 命令安装:
pip3 install appium-python-Client
如何使用appium打开任意一个应用程序
1、打开要测试的应用
2、使用adb命令获取包名和界面名
3、修改desired_caps字典中的appPackActivity的参数
以下是一个简单的Python示 例代码,用于启动一个Android模拟器并进行基本的自动化测试。
from appium import webdriver
desired_caps = {
#平台的名字
'platformName': 'Android',
#平台的版本号
'platformVersion': '5.1',
#设备的名字
'deviceName': 'emulator-5554',
#要打开的包名
'appPackage': 'com.example.app',
#要打开的界面
'appActivity': '.MainActivity'}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_id('com.example.app:id/button').click()
time.sleep(5)
driver.quit()
1.2.2获取App的包名和界面名
#获取包名
driver.current_package
#获取界面名
driver.current_package
1.2.3关闭App和驱动对象
#关闭当前操作的App,不会关闭驱动对象
driver.close_app()
#关闭驱动对象,同时关闭所有关联的App
driver.quit()
1.2.4安装和卸载以及是否安装
#安装App
#app_path :apk路径 app_id包名
if driver.is_app_insatlled("app_id")
#如果安装了,就是卸载
driver.remove_app("app_id")
else:
#如果没有安装,就要安装
driver install_app(app_path)
time.sleep(5)
driver.quit()
1.2.5将应用置于后台
常常应用于银行类App,进入后台一定时间后,如果再回到前台页面会重新输入密码,如果需要自动化测试这种功能,可以使用api进行测试
#second 停留多少秒
driver.background_app(seconds)
完结!!!