一.环境依赖
·Node.js
·appium
·python
·jdk
·Android SDK
·Appium-Python-Client
·Appium-doctor
二.环境搭建
提醒:安装路径如果要自定义的话尽量不要出现中文,不然很容易出现各种报错!
cmd尽量用管理员身份运行
1.Node.js
下载地址:Previous Releases | Node.jshttps://nodejs.org/en/download/releases/
(安装好后需要进行环境变量配置哦)
(如果下载最新版nodejs,也请下载最新版的appium,版本差别太大会不兼容)
如何确认环境是否搭建好可以在cmd下输入:
- npm(node package manage)是node.js安装包管理工具,类似Python中的pip工具。
- 如果显示‘npm’不是内部命令提示,则可以已管理员身份再运行cmd试试。
2.appium
可以直接在cmd中安装:
npm install -g appium
注:这种方法安装有可能很慢,甚至失败(推荐网速好的小伙伴使用)
如果对网速没有信心,我们就可以使用国内镜像来进行安装(这里我使用的是淘宝的)
npm install -g cnpm --registry=https://registry.npm.taobao.org
如看到以下信息则表示设置完成
C:\Users\HP> npm install -g cnpm --registry=https://registry.npm.taobao.org
npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
C:\Users\HP\AppData\Roaming\npm\cnpm -> C:\Users\HP\AppData\Roaming\npm\node_modules\cnpm\bin\cnpm
+ cnpm@5.2.0
added 764 packages in 63.767s
接下来执行以下命令对appium进行安装
#安装最新版本
cnpm install -g appium
#安装指定版本
cnpm install appium@1.7.0 -g
如果上述方法你都安装失败了我们可以使用第三种方法进行手动安装:
appium / Appium.app / Downloads — Bitbuckethttps://bitbucket.org/appium/appium.app/downloads/下载解压后运行
安装路径自己定,其他的默认就好
安装好后将其添加到系统环境变量中,之后就可以执行如下命令进行查看(查看版本可输入appium -v)
之后检查appium知否能正常运行:cmd中输入appium,他会打开appium服务端
然后点击运行
如果能正常显示信息就配置成功啦!
想要安装客户端的小伙伴可以在这里下载
Releases · appium/appium-desktop · GitHubhttps://github.com/appium/appium-desktop/releases
开启服务之前需要设置一下,设置完可以直接点击start或者保存(需要自己命名)在第三模块presets中(下次可以直接在presets中开启服务)
3.python
下载地址:
Download Python | Python.orghttps://www.python.org/downloads/目前Python有两个版本,一个是2.X,一个是3.X。这两个版本是不兼容的。我更推荐大家去下载3.X的使用,但是不建议用最新的版本,你懂的。
具体安装步骤可以看这位博主的帖子:
(12条消息) Python安装教程(2021)_Robin Smith-CSDN博客_python安装教程https://blog.csdn.net/qq_38272958/article/details/114259577
4.jdk
jdk的环境配置相信大家都不陌生这里就不多说了,如果还是有小伙伴不会可以参考这位博主:
(12条消息) JDK的下载、安装、环境配置教程(2021年,win10、win11都可)_dzg_project的博客-CSDN博客_jdk安装教程https://blog.csdn.net/dzg_project/article/details/120789952
5.sdk
为了让你的虚拟机/真机连接到电脑
需配置好jdk环境再进行安装,地址:
Download Android SDK - free - latest version (softonic.com)https://android-sdk.en.softonic.com/download安装步骤参考下面这位博主:
(12条消息) Android SDK 安装及环境配置教程_Krystal_RonghuiLi的博客-CSDN博客_android sdk路径配置https://blog.csdn.net/Krystal_RonghuiLi/article/details/109313593
6.Appium-Python-Client
这个是将你的appium与python连接起来的很重要的东东!
安装:cmd下输入
pip install Appium-Python-Client
安装完后cmd中输入python进入python命令行,接着输入from appium import webdriver,如果没有报错则表示你已经安装成功(输入后他会自动换行)
但是!只是这样的话只能说明在cmd中的python你可以正常导入appium包,而如果你想在pycharm使用的话还需要再pycharm中手动安装导入Appium-Python-Client,具体步骤如下:
1)点击设置
2)interpreter中点击添加
3)搜索Appium-Python-Client点击安装
之后在pycharm里面import webdriver 就不会找不到包啦,看
7.appium-doctor
用来检查你的appium是否出现问题,用管理员身份运行cmd输入命令 :
npm install appium-doctor -g
如果出现以下
则说明安装成功
之后输入appium-doctor如果像我这样上面的有几个绿色框框则表示你的appium已经没啥大问题了(本来应该是绿色勾勾的不知道我的为啥是框框,不过没关系。下面那几个报警告的黄色部分是因为我那些插件没有安装,但是我们现在并不需要他们所以不用管他)
三.开始编写脚本
所有准备就绪!
首先要先了解一下appium中常用的Capability配置:
Desired capability的功能是配置Appium会话。他们告诉Appium服务器您想要自动化的平台和 应用程序。并通知Appium服务器建立需要的Session。
而Capability又被分为三个部分,分别是公共部分、ios部分和android部分,主要的区别就在于ios部分与android部分是不互通的。
公用:(我们只需要记住常用的红色部分就行)
键 | 描述 | 值 |
automationName | 自动化测试的引擎 | Appium (默认)或者 Selendroid |
platformName | 使用的手机操作系统 | iOS , Android , 或者 FirefoxOS |
platformVersion | 手机操作系统的版本 | 例如 7.1 , 4.4 |
deviceName | 使用的手机或模拟器类型 | iPhone Simulator , iPad Simulator , iPhone Retina 4-inch , Android Emulator , Galaxy S4 , 等等.... 在 iOS 上,使用 Instruments 的 instruments -s devices 命令可返回一个有效的设备的列表。在 Andorid 上虽然这个参数目前已被忽略,但仍然需要添加上该参数 |
app | 本地绝对路径_或_远程 http URL 所指向的一个安装包(.ipa ,.apk ,或 .zip 文件)。请注意,如果您指定了 appPackage 和 appActivity 参数 则不需要此参数了。该参数也与 browserName 不兼容。 | /abs/path/to/my.apk 或 http://myapp.com/app.ipa |
browserName | 做自动化时使用的浏览器名字。如果是一个应用则只需填写个空的字符串 | 'Safari' 对应 iOS,'Chrome', 'Chromium', 或 'Browser' 则对应 Android |
newCommandTimeout | 用于客户端在退出或者结束 session 之前,Appium 等待客户端发送一条新命令所花费的时间(秒为单位) | 例如 60 |
language | (Sim/Emu-only) 为模拟器设置语言 | 例如 fr |
locale | (Sim/Emu-only) 为模拟器设置所在区域 | 例如 fr_CA |
udid | 连接真机的唯一设备号 | 例如 1ae203187fc012g |
orientation | (Sim/Emu-only) 模拟器当前的方向 | 竖屏 或 横屏 |
autoWebview | 直接转换到 Webview 上下文(context)。默认值为 false | true , false |
noReset | 在当前 session 下不会重置应用的状态。默认值为 false | true , false |
fullReset | (iOS)删除所有的模拟器文件夹。(Android) 要清除 app 里的数据,请将应用卸载才能达到重置应用的效果。在 Android, 在 session 完成之后也会将应用卸载掉。默认值为 false | true , false |
Android常用:
键 | 描述 | 值 |
appActivity | Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加. (例如 使用 .MainActivity 代替 MainActivity ) | MainActivity , .Settings |
appPackage | 运行的 Android 应用的包名 | com.example.android.myApp , com.android.settings |
appWaitActivity | 用于等待启动的 Android Activity 名称 | SplashActivity |
appWaitPackage | 用于等待启动的 Android 应用的包 | com.example.android.myApp , com.android.settings |
appWaitDuration | 用于等待 appWaitActivity 启动的超时时间(以毫秒为单位)(默认值为 20000 ) | 30000 |
deviceReadyTimeout | 用于等待模拟器或真机准备就绪的超时时间 | 5 |
androidInstallTimeout | 用于等待在设备中安装 apk 所花费的时间(以毫秒为单位)。默认值为 90000 | 例如 90000 |
adbPort | 用来连接 ADB 服务器的端口(默认值为 5037 ) | 5037 |
ISO常用:
键 | 描述 | 值 |
bundleId | 被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。 | 例如 io.appium.TestApp |
udid | 连接的真实设备的唯一设备编号 (Unique device identifier) | 例如 1ae203187fc012g |
launchTimeout | 以毫秒为单位,在 Appium 运行失败之前设置一个等待 instruments 的时间 | 例如 20000 |
如果想了解更多,可以去appium官网上面查看学习:
预期功能 - Appiumhttp://appium.io/docs/cn/writing-running-appium/caps/#android
了解了配置部分,我们就可以正式开始编写我们的第一个APP自动化脚本了!这里我用安卓模拟器代替真机
下面编写一个安装软件并将其打开的脚本:
1.cmd中查看是否与手机连接上以及手机序列号
C:\Users\HP>adb devices
List of devices attached
127.0.0.1:62001 device
2.开启appium服务(这里我使用客户端启动的服务)
3.pycharm中创建python文件
4.pycharm导入appium中的webdriver
from appium import webdriver
5.写入执行代码
1|desired_caps = {} #定义一个字典,存储Capability相关信息
2|desired_caps['platformName'] = 'Android' #定义设备平台名称
3|desired_caps['platformVersion'] = '5.1.1' #定义设备版本号
4|desired_caps['deviceName'] = '127.0.0.1:62001' #定义设备名称
5|desired_caps['app'] = r'G:\appTesting\kaoyan.apk' #获取apk包
6|desired_caps['appPackage'] = 'com.tal.kaoyan' #定义包名
7|desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity' #定义activity
8|driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #调用appium服务并传参
为了方便理解我就分步骤来写了
第2行指定你是安卓机还是苹果机
第3行指定你的手机版本(在手机的设置里面可以找到,每个手机位置都有出入)
第4行是指定你的手机序列号(我这里用的是虚拟机,真机的序列号一般都是一串字母加数字的组合,可以在手机的设置中找到,也可以在pc连接上手机后cmd中输入adb devices查看)
第5行是指你的安装包存放路径,注意要在路径前加上r,这是为了读取目标文件。
第6行是为了指定包名(这个包名不是安装包的名!)可以先手动将软件安装进手机,然后cmd中输入adb shell pm list package查看已安装软件的包名
C:\Users\HP>adb shell pm list package
找到你需要安装的包名(有点费眼睛~)
我找到了!
还有两种操作复杂查看简单的方法是用sdk中自带的uiautomatorviewer或者appium中的检查者功能进行查看,这个小伙伴们可以自己去网上搜教程,这里就不演示了
第7行是定义activity名的,这个activity名又和包名不同了,查看办法为cmd中输入aapt dump badging 你的apk放的绝对路径 (这种方法也可以查看包名!)
C:\Users\HP>aapt dump badging G:\appTesting\kaoyan.apk
package: name='com.tal.kaoyan' versionCode='55' versionName='3.1.0' platformBuildVersionName='N'
sdkVersion:'10'
targetSdkVersion:'21'
。。。。。。。。。
launchable-activity: name='com.tal.kaoyan.ui.activity.SplashActivity' label='' icon=''
这个输出的东西很多,找到下面的launchable-activity这里,name属性里就是我们需要的activity名了!
第8行是为了调用appium服务,'http://localhost:4723/wd/hub'里localhost指的是本机,也可以改为127.0.0.1,4723是appium默认的端口号,这个也是可以改的,启动appium服务时在这里可以改为没有被占用的端口号,还记得这个步骤吗
wd:可以理解是WebDriver的缩写,hub:是指主节点、中心节点,这两个不能省略!
当工作区没有报错时就可以执行代码啦!
执行和服务器端也没问题! 执行过程中不要操作手机,你可以看见他自动在安装并打开你指定的软件
当理解了每个步骤后可以将1-7布合并成一个步骤:
desired_caps = {'platformName': 'Android', 'platformVersion': '5.1.1', 'deviceName': '127.0.0.1:62001', 'app': r'','appPackage': 'com.tal.kaoyan', 'appActivity': 'com.tal.kaoyan.ui.activity.SplashActivity'}driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
你学废了吗?