appium初阶
1、夜神模拟器设置:
1)系统设置-性能设置:中
2)系统设置-分辨率设置:手机版,720*1280
3)系统设置-帧数设置:10帧数
2、配置安卓SDK的环境变量
1)解压SDK安装包至任意路径
2)配置安卓SDK的环境变量:
(新建系统环境变量:ANDROID_HOME)
ANDROID_HOME D:\ADT-Android\sdk
(编辑系统环境变量:path)
path D:\ADT-Android\sdk\tools;D:\ADT-Android\sdk\platform-tools;
3)下载站点: http://www.androiddevtools.cn/ http://tools.android-studio.org/index.php
3、Android SDK与模拟器或实体手机连接:
1)如果是模拟器,则需要利用模拟器的adb.exe程序替换SDK目录下的adb.exe;放置在此路径D:\ADT-Android\sdk\platform-tools
2)如果是实体机,则需要电脑端安装与该实体匹配的驱动程序
4、adb常用命令:
1)adb version 显示adb的版本信息
2) adb devices 显示adb的设备信息
3) adb connect 127.0.0.1:62001 连接设备
4)adb install -r 绝对路径\yibijizhang.apk 命令行安装apk
5) adb -s 127.0.0.1:62001 命令 :指定手机设备进行操作某个指定;和其他命令组合使用
6)adb push 绝对路径/XX.apk /data/local/tmp 上传文件至手机指定路径
7) adb pull /data/local/tmp/yibijizhang.apk D:\ADT-Android 下载手机文件至电脑本地指定路径
8)adb shell am start -n com.miui.calculator/.cal.CalculatorActivity 命令行启动APP应用程序计算器
9)adb uninstall com.miui.calculator 应用程序主包名
11) adb kill-server:停止adb服务器
12) adb start-server:启动adb服务器
5、Appium的安装配置:
1)下载Appium服务器:Desktop Server,Node.js无界面版
2)安装Node.js,基于Google JS引擎的一套利用JavaScript脚本来开发的服务器端应用
3)配置Node.js的环境变量:path ;默认安装时,会自动添加环境变量至path
4)利用npm安装Appium无界面版服务器:npm install –g appium(默认镜像)
5) 国内镜像安装Appium:npm --registry http://registry.cnpmjs.org install -g appium
6)或者npm install -g appium --registry https://registry.npm.taobao.org
7)安装Appium-Doctor:npm --registry http://registry.cnpmjs.org install -g appium-doctor
8)默认的Node的模块的安装目录:C:\Users\Administrator\AppData\Roaming\npm (Windows),配置npm的环境变量path:C:\Users\Administrator\AppData\Roaming\npm
9)安装Python的Appium库:pip install Appium-Python-Client -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
10)安装成功后,命令检测环境变量是否配置正确:appium -v;appium-doctor
11)启动服务:appium
12)准备安卓的操作系统6.0,配置环境变量path
13)快速实现python脚本准备:利用aapt命令查看主包名和启动的主类名,aapt dump badging APK文件
小米计算器---package: name='com.miui.calculator';launchable-activity: name='com.miui.calculator.cal.CalculatorActivity'
一笔记账---package: name='com.mobivans.onestrokecharge';launchable-activity: name='com.stub.stub01.Stub01'
备注:通常第一行的package的name后面显示的是主包名;寻找输出信息中的launchable-activity,对应的就是启动类。(如果前面有包名,去掉包名,不要去掉.)
14)运行sdk下的tools目录下的uiautomatorviewer.bat,启动元素识别程序
15)快速实现脚本,联通。appium -a 127.0.0.1 -p 4723
6、Appium的使用
1)driver.find_element_by_name(“text”):根据元素的text属性进行识别。目前该查找方式在最新版本的Appium中已经被取消,但是我们可以通过修改Appium源代码的方式继续启用,因为这个API也是使用频率非常高的。只需要修改driver.js文件,添加name属性即可。
2)找到“this.locatorStrategies = ['xpath', 'id', 'class name', 'accessibility id', '-android uiautomator'];”在其列表最后添加’name’字段变成“this.locatorStrategies =['xpath', 'id', 'class name', 'accessibility id', '-android uiautomator', 'name'];”并重启Appium服务器即可生效。
a)针对Node.js无界面版本:
C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-android-driver\build\lib\driver.js,
b)针对Desktop Server:
C:\Program Files (x86)\Appium\resources\app\node_modules\appium-android-driver\build\lib\driver.js
C:\Users\Administrator\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib
7、Appium参数:
Appium内置的配置参数非常多,主要分为两大类。一类是命令行启动参数,主要用于在命令行启动Appium服务器的时候指定的参数。一类是脚本开发时的兼容性设置参数,如前一节内容中的desired_caps字典对象指定的参数值。两种类别的参数有些是可以互相代替的,比如在启动命令中未指定,而通过字典对象在脚本中指定,结果一样。先来看看两种类型的参数中比较重要的参数。
1. 命令行启动参数
(1) -a 绑定的IP地址:如appium –a 192.168.1.5,默认不指定的情况下为localhost,也即是127.0.0.1,适用于为本机脚本提供连接。当然,我们也可以让测试脚本连接远程Appium服务器。
(2) -p 服务器端口号:Appium服务器启动时绑定的端口号,用于脚本的通信,默认值为4723。此处需要注意的是,一个端口号只能服务于一台移动设备,如果我们需要同时对多台针对设备进行测试,那么则需要启动多个Appium服务器,每一个服务器实例需要绑定不同的端口号。
(3) -bp 连接移动端设备的端口号,即Bootstrap端口,默认值为4724。如果需要连接多台移动设备,则需要启动不同端口的Appium服务器并且指定不同的设备端口号。即需要单独为不同的设备,启动不同端口的Appium服务器,并且指定不同的Bootstrap端口号,否则会导致冲突。
(4) --app 应用程序路径:指定调试模式下的iOS应用或标准的Android系统的APK应用程序的路径,通常情况下不建议在启动时指定,而是在测试脚本中通过字典对象来指定应用程序路径。如果是针对非调试模式下的iOS设备,则对应参数为--ipa。如果已经在手机上安装了相应的应用,则勿需指定,只需要通知移动端代理启动应用即可。
(5) --app-pkg:指定要测试的应用程序的主包名,与测试脚本中指定的功能一致。该参数仅Android端适用。
(6) --app-activity:指定要测试的应用程序的主类名,与测试脚本中指定的功能一致。该参数仅Android端适用。
(7) -U 设备编号:在启动时直接指定当前服务器连接到哪个设备终端。其编号可以从命令“adb devices”的输出列表中获取。一台设备,当连接上电脑后一定有一台唯一的编号。也可以通过参数“--udid”指定,二者效果一致。
(8) --session-override:当连接过程出现Session冲突的时候,允许被覆盖。目前使用情况较少。
(9) --full-reset:完全重置被测试应用程序的状态,包括将测试应用程序全部删除。
(10) --no-reset:不重置状态,不删除应用。
(11) -g 日志文件:将Appium运行过程的日志输出到指定的日志文件中,便于后续查看。通常情况下,在正式进行测试的过程,我们最好将日志输出到文件,便于永久保存和后续分析。该参数也可以使用“--log”代替。
(12) --log-timestamp:在终端输出里显示时间戳,便于更好地知道日志输出的时间。
(13) --log-level:在终端里输出的日志级别,可以设置为debug,info,warn,error等级别。
(14) --device-name:指定待测试的移动设备的名称,也可在测试脚本中指定。
(15) --platform-name:指定移动设备对应的平台的名称,如Android或iOS,也可在测试脚本中指定。
(16) --platform-version:指定移动设备系统对应的版本号,如4.4.2,也可在测试脚本中指定。
比如可以通过以下命令启动Appium,来指定IP地址,端口号,Bootstrap端口号,设备编号,不重置状态,输出时间戳在日志中,覆盖Session连接状态,并将日志信息输出到指定的日志文件中进行永久保存:appium -a 127.0.0.1 -p 4723 –bp 4724 –U 127.0.0.1:62001 --no-reset --session-override --log-timestamp --log D:\appium.log
8、测试脚本字典参数(platformName、platformVersion、deviceName、app、browserName、udid、noReset、appActivity、appPackage、unicodeKeyboard)
在测试脚本中的字典参数有很多与命令行参数功能类似,只是参数名称不一样,现列举如下:
(1) automationName:指定自动化测试引擎,可以是Appium (默认) 或 Selendroid。如果是较新的Android版本,如6.0以上,则必须明确指定automationName=’ uiautomator2’。
(2) platformName:指定要测试的手机操作系统,如:iOS,Android或FirefoxOS。
(3) platformVersion:移动操作系统版本,如4.4.2。
(4) deviceName:使用的手机类型或模拟器类型。在iOS中,必须使用“instruments -s devices”命令得到的设备编号。
(5) app:指定待测试应用程序。
(6) browserName:如果是针对手机上的浏览器应用进行测试,需要指定其浏览器名称。在iOS上可用“Safari”,在Android上可指定“Chrome”,“Chromium”或“Browser”。
(7) newCommandTimeout:设置命令超时时间,单位:秒。达到超时时间仍未接收到新的命令时Appium 会假设客户端退出然后自动结束会话。
(8) autoLaunch:Appium是否需要自动安装和启动应用,默认值为true。
(9) udid:连接的移动设备的唯一设备标识
(10) autoWebview:直接转换到 WebView 上下文。 默认值为false。
(11) noReset:不要在会话前重置应用状态,默认为false。
(12) fullReset:在会话结束后自动清除被测应用,默认为false。
(13) appActivity:应用包中启动的 Android Activity 主类名称。它通常需要在前面添加“.”。
(14) appPackage:想运行的Android应用程序的主包名。
(15) deviceReadyTimeout:设置等待一个模拟器或真机准备就绪的超时时间。
(16) unicodeKeyboard:设置使用Unicode输入法,这样才能支持中文输入。
(17) resetKeyboard:在使用了unicodeKeyboard参数后,对其进行重置,还原为默认设置。
上述只列出了比较常见的一些字典参数,如果需要完整的参数列表,可以直接访问Appium官方网站查阅,网址为“http://appium.io/docs/en/writing-running-appium/caps/”。
9、Appium简介
1)Appium支持Android,IOS,firefoxOS
2) 使用webdriver框架