appium是一个自动化开源测试工具,支持ios平台和安卓平台啊的原生应用,也支持web应用和混合应用
因为web程序出现的比应用程序早,自动化测试工具比移动应用自动化工具更加成熟
appium是继承webdriver的,可以使用webdriver的api进行跨平台的自动化
客户端、服务端架构
appium的核心是一个web服务,他接受来自客户端(你写的代码)的链接,监听命令并在移动端应用上执行,答复http的响应来描述执行结果
session
保存http浏览器和服务器的一个会话状态
自动化始终在一个会话中执行,客户端会给服务器发送请求
请求包含一个被称作预期能力的json的对象,这个时候服务器会开启这个自动化会话
并返回一个用于后续发送命令的id
预期能力
是一些发送给appium服务的键值对组合,他高数服务器,我们想启动什么类型的自动化会话
可以修改服务器在自动化过程中的行为,
appium服务器
是一个node.js编写的
appium客户端
我们写的代码
appium desktop
他打包了appium服务器运行需要的所有东西,还可以产看应用程序的结构树--元素定位
一、安装adb
adb下载地址
Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip
安装adb后,配置系统环境变量,把adb安装路径粘贴到apth变量下并保存;
然后cmd进入命令符窗口,输入adb version,查看adb是否配置成功
二、安装node
打开环境变量,把node安装路径复制到path下面
查看node是否安装成功
node -v
npm -v
三、安装appium
打开appium
host是是ip地址保持默认不用修改
port是端口保持默认不用修改
start server v1.20.2表示启动appium服务
进入appium显示welcome to appium v1.20.2表示appium启动成功
四、安装手机模拟器
手机模拟器设置系统版本,打开开发者选项,允许usb调试
在通过cmd页面通过adb命令:adb connect "IP地址":"端口"
五、安装python
1、通过cmd命令,安装python
pip install python
2、安装pycharm
https://www.jetbrains.com/pycharm/download/
3、通过cmd安装py插件appium
pip3 install Appium-Python-Client
安装后,运行py代码报错
这个错误AttributeError: 'NoneType' object has no attribute 'to_capabilities'
卸载appium插件,然后在安装插件
pip3 uninstall Appium-Python-Client 卸载
pip3 install Appium-Python-Client==2.0 安装2.0
从新卸载和安装是因为appium和selenium发生冲突,需要对appium降级来解决这个问题
六、安装sdk
1、下载好sdk后,把sdk安装路径复制到环境变量path中
2、运行SDK Managr.exe运行程序,下载以下三个文件
- build-tools
- platform-tools
- add-ons
运行appium
appium工作原理--安卓
安卓平台
1、有客户端发起请求,经过中间服务套件,驱动app执行相关操作,客户端就是你写的 代码
2、中间服务套件,是实现appium的解析服务,appium在服务端启用4723端口,
经过该端口实现client(服务器)与appium server的通信。appium server把请求转发给 bootstrap.jar 。 bootstrap.jar安装在手机上,监听4724端口并接受appium命令,最终调用uiautomator,实现测试过程
3、nootstrap将执行结果返回给appium server。appium server在将结果返回给client
ios平台
ios和安卓的区别:ppium server把请求转发给 bootstrap.js
一、获取apk安装包路径AppPackge
1、在cmd命令窗口使用appt命令
- 找到你下载的sdk安装路径,进入build-tools/29.0.3文件内
- 清空文件路径输入cmd打开命令窗口
- 使用aapt命令查找安装包
2、找到你下载的apk,并执行命令
aapt dump xmltree 手机软件安装路径 AndroidManifest.xml|findstr "package"
二、获取Acticity类名appActivity
Acticity类名是调用app代码的入口类,
1
2、找到你下载的apk,并执行一下命令
获取类名
aapt d badging 手机软件安装包路径|findstr "launchable-activity"
三、确定被测设备品牌名称platformName
1、确定是android还是iso
四、确定被测设备系统版本platformVersion
1、进入手机设置查看手机系统版本
五、确定被测设备名称deviceName
1、手机打开开发者模式,在用adb命令链接设备
2、输入以下命令查看设备名称
adb drivers
六、确定appium输入法unicodekeyboard
appium的输入法类型是unicodekey;默认为false ,打开为ture
七、输入法恢复默初始状态resetkeyboard
默认为false不恢复,为ture则恢复
nicodekey的输入法配置默认也经常不起作用,这个时候需要我们手动,去设置里修改输入法,把输入法改为初始状态
八、python启动appium
from appium import webdriver
"""
下面描述了appium和设备信息,如果信息不正确无法执行测试
"""
desired_caps={
"platformName":"Android",#指定应用平台的类型Android或ios
"platformVersion":"12",#被测设备版本号
"deviceName":"127.0.0.1:7555",#获取设备名称
"AppPacKge":"dsada",#应用程序包名
"appActivity":"dsa",#应用中需启动程序的Activity类名, Activity是app程序入口的类名‘
"unicodeKeyboard":"True", #设置输入法类型,默认为false
#"resetkeyboard参数,经常不起作用,这就导致,
#我们在执行代码后,要经常去设置里,手动把输入法类型该回去
"resetkeyboard":"Ture",#测试结束后,重置输入法原有状态,这个值默认False
}
#无注释
desired_caps={
"platformName":"Android",
"platformVersion":"12",
"deviceName":"127.0.0.1:7555",
"AppPackge":"dsada",
"appActivity":"dsa",
"unicodeKeyboard":"True",
"resetKeyboard":"Ture",
}
点击appium放大镜
把py启动appium服务的代码,放在Desired Capabilities下面的JSON Representation
点击start session进行定位