Appium自动化架构和Selenium有很大的相似之处
包含了 3 个主体部分 :
Test script --- 即我们的测试程序,是测试逻辑的实现部分。就像以前我们的Selenium自动化脚本。
而且和Selenium一样,可以使用多种语言,Appium 客户端库也支持多种语言。
一般运行在pc、上,或者苹果笔记本、台式机
Appium Server ---这是一个用 javascript代码实现的程序。 是运行在 Node.js 里面的。
被测试app --- 运行在真实设备或者模拟器中
过程及运行逻辑:
我们开发的的自动化程序(Test script) 运行各种测试脚本
告诉 Appium Server,我们要做什么操作
Appium Server接收到 测试程序的命令后, 又是怎么真正的控制移动设备上的app的呢?
原来appium 是自己开发一个自动化模块(或者叫应用),安装在移动设备中的,如同一个木马
appium开发的木马,通过使用 各个移动APP开发平台 自带的 自动化框架来实现的
appium在移动设备上会注入测试模块,测试模块会调用这些自动化框架提供库,从而控制设备和操作app。
安装Appium Python Client 包
安装Appium Python Client 包的命令
pip install Appium-Python-Client
github网址
安装 Appium Server
下载安装Appium Desktop的安装包
下载地址 https://github.com/appium/appium-desktop/releases/latest 下载扩展名为.exe的包
安装JDK
到 oracle 官方网站下载JDK 1.8 的安装包,进行安装
设置环境变量 JAVA_HOME 为 jdk 的根目录 比如 d:\tools\java\jdk1.8.0_121
参考我之前的文章
https://blog.csdn.net/sgpy406/article/details/83120234
安装 Android SDK
也需要配置环境变量
设置环境变量 android_home 的值为 sdk 目录
可参考:https://blog.csdn.net/sgpy406/article/details/83120332
举例子:
先创建目录 d:\android\sdk
打开 https://developer.android.google.cn/studio/(可能会被墙,和谐社会,科学上网)
下载 sdk-tools包 到 d:\android\sdk,进入\tools\bin\ ,执行如下命令,进行下载安装
sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.2"
手机连接电脑
找到一个安卓设备,将其连接到电脑上,cmd窗口下,确保可以被命令 adb devices -l 检测到
运行自动化测试
运行Appium Server,并设置、启动服务
运行自动化脚本
初学appium时,会接触的代码:
#在python界面,导入库
from appium import webdriver
#新建一个空字典
desired_caps = {}
#设备对应系统
desired_caps['platformName'] = 'Android'
#系统对应版本
desired_caps['platformVersion'] = '6.0'
#需要一个设备名称
desired_caps['deviceName'] = 'test'
#如果app未安装在手机上,填写你apk所在的路径,运行时会帮你安装
desired_caps['app'] = r'e:\apk\yourapp.apk'
#应用程序的包名
desired_caps['appPackage'] = 'io.manong.developerdaily'
#app里面的Activity,需要另外获取,后续一篇会涉及
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
#涉及中文时 此选项需要注意
desired_caps['unicodeKeyboard'] = True
#
desired_caps['resetKeyboard'] = True
#操作完成后,需不需要重置
desired_caps['noReset'] = True
#appium server 认为 和客户端之间 无响应最大时间,超过这个时间就会停止服务
desired_caps['newCommandTimeout'] = 6000
#启动Remote RPC
# appium server 在这个URI上接收 客户端发送的rest API请求
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)