移动端Appium环境部署比Web的selenium环境稍微复杂一些,如用python编写测试用例脚本或者开发测试框架以及UI自动化操做方法是同样的,基本是通用。因二者都是基于selenium,在Python的appium包中实际继承了Selenium,在测试过程当中将移动端的页面元素看成是网页来处理。Web和Appium二者区别在于环境部署和脚本部分配置差别。若是对Web的selenium自动化脚本有基础的话,只要环境搭建及配置搞明白能够直接上手Appium移动端自动化测试。php
因为网上的Appium部署的环境资料比较零散,不完整,本身把以住工做中使用到的知识梳理总结搭建的appium环境从0到1完整部署过程记录。java
1、环境准备:node
本文讲解的环境在windows7系统64位版本进行部署。python
须要安装的工具清单以下:android
1.jdk1.8.0 (64位)ios
2.android-sdk_r24.4.1-windows (下载地址:http://tools.android-studio.org/index.php/sdk)git
3.python:3.6 (下载地址:https://www.python.org/)github
4..net framework4.5 (下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=30653)web
5.Node.js:node-v10.14.2-x64 (下载地址:https://nodejs.org/en/download)shell
6.appium-desktop :1.10.0 (下载地址:https://github.com/appium/appium-desktop/releases)
7.Appium-Python-Client:1.10.1
8.夜神摸拟器:6.2.6.3
2、安装jdk
一、在系统环境变量,新增JAVA_HOME为jdk安装路径:D:\Java\jdk1.8.0_181
二、在Path变量中增长:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
三、在CLASSPATH变量中增长:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
3、安装android-sdk
将下载的 Android SDK 解压指定的目录
在系统变量新建:ANDROID_HOME,对应变量值为:D:\android-sdk(sdk安装路径)
path变量里面添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools;
注意:
因为目前Google在国内没法访问,因此须要经过镜像方式去下载咱们的SDK,就碰到android sdk解压后没有platform-tools目录,或者安装SDK时遇到"Done loading packages"的问题。
一、进入Android SDK安装目录中点击SDK Manager.exe,而后选择Tools->options菜单,弹出以下界面:
录入以下数据:【本人亲测该URL地址镜像服务器可用】
Proxy Server:mirrors.neusoft.edu.cn
Proxy Port:80
并勾选Others框内的第一个复选框,如上图红色圈。
二、列出Android SDK在线更新镜像服务器
三、完成代理设置后再次打开SDK Manager.exe,便可更新及安装咱们的SDK了。
接下来勾选须要下载的android版本和工具,以下图所示:
如上图Tools的红色圈内必需要勾选安装,下载安装完后,Status状态下会出现Installed表示已安装。
本文选择的是android 6.0版本,如上图。
Extras下Android Support Repository是android系统的兼容库,必须安装,Google USB Driver也安装。
勾选完后,单击右下角install package按钮,安装更新所有内容大概要2小时左右的时间,请耐心等待!
下图是一位大神整理的SDK图片描述很详细,供参考,以下图所示:
3、安装python
本文选择3.6版本安装完后,进行环境变量配置,指定安装路径目录便可。
在系统变量的path变量新增:D:\Programs\Python\Python36;D:\Programs\Python\Python36\Scripts
4、安装.net framework4.5
安装appium以前,先安装.net framework4.5工具,不然安装appium会报错,直接傻瓜式安装便可。
5、安装Node.js
安装appium以前,须要安装Node工具,傻瓜式安装完后,在cmd窗口录入node -v查看版本号。
6、安装appium-desktop
因为AppiumForWindows一直没更新版本,版本太低,对android系统高版本不支持。由appium-desktop替代。
安装appium-desktop桌面版比较简单,直接傻瓜式安装便可,安装完后桌面出现appium图标,点击打开以下图:
以下命令行版本安装:
一、安装appium 【可安装,也可不安装,前面已安装有appium-desktop桌面版】
npm --registry http://registry.npm.taobao.org install appium -g
验证:cmd输入appium
二、安装appium-doctor检测环境
npm --registry http://registry.npm.taobao.org install appium-doctor -g
验证:cmd输入appium-doctor
7、安装Appium-Python-Client
直接在cmd窗口输入pip3 install Appium-Python-Client安装便可,这个工具是用来可以在客户端编写python脚本去实现操做android系统的APP测试。
8、安装夜神摸拟器
直接傻瓜式安装便可,安装完后,能够直接在夜神摸拟器自带的夜神应用中心HD,搜索须要下载安装APP软件,或者也能够网上下载的apk包文件直接拖到夜神摸拟器窗口就能够实现自动安装app软件。以下图所示:
到此为止,全部的该要安装工具都安装完后,接下来就能够配置,调试跑通起来。
一、链接夜神摸拟器前,先在cmd窗口检测环境sdk和夜神摸拟器版本号是否一致性。不然会报错以下信息:
adb server version(36) doesn’t match this client (40);killing…
nox_adb.exe connect 127.0.0.1:62001
如夜神版本比SDK的adb的版本号低的话,以下解决办法:
a、关掉夜神模拟器。同时去任务管理器里看下,adb.exe以及nox_adb.exe这2个进程有没有在运行?有的话就结束掉。
b、找到SDK的目录和夜神模拟器的目录,将夜神模拟器目录下本来的adb.exe和nox_adb.exe修改文件名为adb_bak.exe和nox_adb_bak.exe,将SDK目录(D:\android-sdk\platform-tools)下的adb.exe文件复制到夜神模拟器的目录(D:\Program Files\Nox\bin)下,将从SDK目录复制过来的adb.exe放在夜神目录下,同时复制一份更名为nox_adb.exe。
最后在cmd窗口进入夜神安装目录下D:\Program Files\Nox\bin输入命令:nox_adb.exe connect 127.0.0.1:62001后,查看链接信息以下:
如上图表示已经成功链接到夜神摸拟器。
二、点击电脑桌面appium图标启动,点击Start Server按钮启动appium服务。以下图所示:
点击放大镜按钮进入appium配置数据以下图所示:
在D:\android-sdk\build-tools\28.0.3目录下的cmd窗口输入aapt dump badging D:\test\taobao.apk命令后,能够找到以下信息。
package: name='com.taobao.taobao'
launchable-activity: name='com.taobao.tao.welcom.Welcom'
查找appPackage和appActivity方法有好多种,选其中一个方法就好了。还可下载的查看包名的apk工具拖到夜神摸拟器窗口安装后,可直接用查看包名工具来查看模拟器已安装全部的APP包名清单,以下图所示:
点击appium界面的右下角“Start Session"打开以下界面,就能够看到链接到夜神摸拟器启动打开淘宝APP软件主界面,就能够定位元素控件写测试脚本了。
如上图appium自带的可定位元素属性,值。另外一种方法可用sdk自带的工具D:\android-sdk\tools目录下uiautomatorviewer.bat文件来定位元素,查看属性,值。打开后弹以下界面:
三、接下来就能够编写测试脚本调试是否能跑通,以下图所示:
方法一,使用appium工具定位元素:
方法二,使用SDK自带的uiautomatorviewer工具定位元素以下图所示,前提条件必须关闭appium,不然会报错获取不到当前摸拟器的图像。
经过以上可知控件的元素,就能够编写测试脚本,以下图所示:
须要先启动appium服务,而后执行测试脚本,可经过夜神摸拟器查看当前自动化运行的淘宝APP界面操做测试。若是须要测试真机的话,将手机和电脑经过USB数据线链接,手机打开USB调试模式,USB的链接方式要选择设备文件管理选项。
而后在cmd窗口输入adb devices查看是否链接成功并获取到驱动名。最后在测试脚本的驱动名称改成当前真机驱动名称,再执行测试脚本便可实如今真机跑。
本文介绍搭建IOS的摸拟器和真机的appium环境,部署过程当中各类报错遇到很多坑,关键xcode和ios系统、appium版本三者要对应起来,不然安装部署大多数是版本问题。若是在项目测试的话,最好在IOS系统电脑搭建IOS和android两套环境,这样一台机子就搞定了,在IOS搭建的android跟windows方法差很少,这里重点讲搭建IOS的appium环境。
1、环境准备:
须要安装的工具清单以下:
1.jdk11.0.2 (64位)
2.xcode:10.1 (下载对应的MACOS系统版本:https://developer.apple.com/download/more/)
3.python:3.6 (下载地址:https://www.python.org/)
4.macOS:10.14.3
5.Node.js:node-v10.15.1-x64 (下载地址:https://nodejs.org/en/download)
6.appium-desktop :1.8.2 (下载地址:https://github.com/appium/appium-desktop/releases)
7.Appium-Python-Client
先进入根目录输入vim ~/.bash_profile
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
export JAVA_HOME
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
从新引入生效:source ~/.bash_profile
查看更改后的JAVA_HOME路径:echo $JAVA_HOME
brew是mac上一个软件管理工具,经过它能够在终端输入命令安装各类软件包
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
检查homebrew是否安装:brew -v
$ git --version
git version 2.19.0
brew install carthage
验证:carthage version,查看版本
brew install -HEAD libimobiledevice
验证:将真机链接在mac上,命令行输入idevice_id -l,若是出现该设备的udid,则说明配置成功可以正常识别了。
查看真机的设备名字:idevicename -d
查看全部的模拟器和真机:instruments -s devices
brew install ios-deploy
从App Store获取xcode的工具并安装
直接官网下载安装
pip3 install Appium-Python-Client
npm install -g appium-doctor
使用appium-doctor 检查Appium iOS环境环境:appium-doctor --ios
若是出现opencv4nodejs、fbsimctl、applesimutils、ffmpeg、ios-webkit-debug-proxy失败信息,可经过以下手动安装便可:
安装ffmpeg
brew install ffmpeg
brew tap facebook/fb and brew install fbsimctl --HEAD
安装ios-webkit-debug-proxy
brew install ios-webkit-debug-proxy
安装opencv4nodejs:
使用npm代替brew:
brew install cmake
npm install -g opencv4nodejs
安装fbsimctl:
brew tap facebook/fb
brew install fbsimctl
安装applesimutil:
brew tap wix/brew
brew install applesimutil
2、Appium环境安装:
安装WebDriverAgent(WDA)
若是是模拟器测试,不须要安装WDA,若是用真机必定要安装WDA
前提:电脑必须安装了Carthage
注意,因为appium安装目录下自带的WebDriverAgent有BUG问题,须要从网上下载最新版本执行脚本。
先进到用户目录下:
cd ~ git clone https://github.com/facebook/WebDriverAgent.git cd WebDriverAgent mkdir -p Resources/WebDriverAgent.bundle sh ./Scripts/bootstrap.sh
appium-xcuitest-driver
所在文件目录下:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver下把自带的WebDriverAgent目录重命名为WebDriverAgent_bak。
执行命令:ln -s ~/WebDriverAgent WebDriverAgent (其中~/WebDriverAgent是源地址,后面的是目标地址)
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
,双击
WebDriverAgent.xcodeproj
工程文件。
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
执行命令:xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test
若是终端出现如下信息,表示编译 OK
Testing failed:
这个时候iphone多了一个WebDriverAgentRunner的app,以下图所示:Early unexpected exit, operation never finished bootstrapping - no restart will be attempted ** TEST FAILED *
在手机通用-》描述文件设置信任证书,终端再从新执行xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test进行验证环境。
验证一下WDA是否运行成功,由于有些国产的iPhone设备经过手机的IP和端口还不能访问,此时须要将手机的端口转发到Mac上,终端输入:iproxy 8100 8100控制台切换到wda的文件夹目录下,运行:WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=(你的id) USE_PORT=8100 test(id填你本身的uid)
执行:iproxy 8100 8100
控制台运行:WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=A2C61397-E627-422E-87D3-8745C3E4F927 USE_PORT=8100 test(id填使用的模拟器uid)进行端口转发。
浏览器输入:http://localhost:8100/status,返回一串json即证实成功
真机命令行启动wda:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/摸拟器的命令行启动wda:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
到此为止,真机环境搭建完成,接下来就是能够配置appium信息,写测试脚本跑自动化了。
4、安装IOS摸拟器
打开已经安装好的xcode(位于/Applactions/Xcode),如图

选择Create a new Xcode project,按下图操做:



选择摸拟器:

若是须要其它,还可点击Add Additional Simulators下载摸拟器版本。
最后,点击左侧三角形运行,出现打开摸拟器,会多出test的app图标,以下图:

如查看udid方法以下图左边的Devices是查看真机,右边的Simulators是查看摸拟器信息。还可经过命令instruments -s devices查看全部的真机和摸拟器。

备注:在真机上是安装.ipa的包,在模拟器上是安装.app的包。
这是两种不一样的打包方法,也就是说从appstore这种渠道下载的.ipa是没法安装到模拟器上的,必需要找大家开发专门针对iOS模拟器打个模拟器的包,后缀是.app 。
五、APPiumDesktop的环境真机和摸拟器参数配置
a、在真机上测试时,须要在AppiumDesktop新增udid、xcodeOrgld和xcodeSigningld等字段属性。xcodeOrgld是指开发者帐号id,可在https://developer.apple.com/account的左侧的Memeber ship找到,或者在xcode帐号管理里。
以下图参考:
b、摸拟器配置以下图所示:
备注:如上图真机和摸拟器已经有安装好的被测app软件,可把参数app属性改成bundleId,此项至关于android的里面的app包名。若是想看app的bundleId,只须要安装了ideviceinstaller工具就能够了,而后执行 ideviceinstaller -l 就能够将手机安装的app列出。Appium每次运行,不安装APP,就在Capabilities增长参数属性noReset设置为True。
以下图公用的Capability参数:
其它更多的参数参考请进入:https://blog.csdn.net/ljl6158999/article/details/80594521
六、APPium代码启动
参考以下图启动摸拟器执行用例脚本自动化测试示例代码:
一、appium是基于webdriver 协议,appium ios封装了apple的Instruments框架,用了里面的UIAutomation,Client是咱们编写的 webdriver脚本,中间是appium启动server(默认监听 4723 端口 ),appium server调用instruments.js启动一个 socket server ,同时分出一个子进程运行instruments.app 将bootstrap.js(一个 UIAutomation 脚本)注入到 devices用于和外界进行交 ,最后 Bootstrap.js将执行的结果返回给appium server, appium server再将结果返回给appium client 。
二、appium使用的是UIAutomator框架,咱们在client客户端编写测试脚本运行,调用的是webdriver接口,appium server接收到咱们client发送过来的命令去调用UIAutomator,把命令转换后去实现,Bootstrap将执行的结果返回给appium server ,最后由Appium server再将结果返回给client端。