概述
Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例。
iOS10后基于UIAutomation的测试框架已经苹果更改为XCUITest测试框架了,从Appium1.6.3开始Appium也开始支持XCUITest了。由于时间原因,Appium1.6.3以前的测试环境搭建及其工具使用就不再说明,资料网上也是一大把。截止目前最新的是Appium1.6.5,下面介绍下环境搭建过程。
开发环境
系统:macOS Sierra (10.12.4)
开发工具:Xcode 8.3.2(iOS10.3.1)
环境搭建
开始搭建
1、 安装homebrew:homebrew 简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum等神器。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、 安装libimobiledevice:libimobiledevice 是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议。不依赖任何已有的私有库,不需要越狱。应用软件可以通过这个开发包轻松访问设备的文件系统、获取设备信息,备份和恢复设备,管理 SpringBoard 图标,管理已安装应用,获取通讯录、日程、备注和书签等信息,使用 libgpod 同步音乐和视频。
$ brew install libimobiledevice --HEAD
3、 安装carthage:carthage 使用于 Swift 语言编写,只支持动态框架,只支持 iOS8+的Cocoa依赖管理工具。
$ brew install carthage
4、安装node:node是安装npm的前置条件。
$ brew install node
5、安装npm:npm是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。
$ brew install npm
6、安装cnpm:国内直接用npm下载安装会有好多网络问题,安装淘宝的cnpm要比npm好用,https://npm.taobao.org/
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
7、安装ios-deploy:ios-deploy是一个使用命令行安装ios app到连接的设备的工具,原理是根据os x命令行工程调用系统底层函数,获取连接的设备、查询/安装/卸载app。
$ cnpm install -g ios-deploy
8、安装xcpretty: xcpretty是用于对xcodebuild的输出进行格式化。并包含输出report功能。
$ gem install xcpretty
9、安装appium,appium-doctor
$ cnpm install -g appium
$ cnpm install -g appium-doctor
10、使用appium-doctor检查appium环境
$ appium-doctor //appium-doctor --ios 只检测iOS环境
info AppiumDoctor Appium Doctor v.1.4.2
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor ✔ Node version is 6.10.2
info AppiumDoctor ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor ✔ Xcode Command Line Tools are installed.
info AppiumDoctor ✔ DevToolsSecurity is enabled.
info AppiumDoctor ✔ The Authorization DB is set up properly.
info AppiumDoctor ✔ Carthage was found at: /usr/local/bin/carthage
info AppiumDoctor ✔ HOME is set to: /Users/zhoutq
WARN AppiumDoctor ✖ ANDROID_HOME is NOT set!
WARN AppiumDoctor ✖ JAVA_HOME is NOT set!
WARN AppiumDoctor ✖ adb could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor ✖ android could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor ✖ emulator could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor ✖ Bin directory for $JAVA_HOME is not set
info AppiumDoctor ### Diagnostic completed, 6 fixes needed. ###
info AppiumDoctor
info AppiumDoctor ### Manual Fixes Needed ###
info AppiumDoctor The configuration cannot be automatically fixed, please do the following first:
WARN AppiumDoctor - Manually configure ANDROID_HOME.
WARN AppiumDoctor - Manually configure JAVA_HOME.
WARN AppiumDoctor - Manually configure ANDROID_HOME and run appium-doctor again.
WARN AppiumDoctor - Add '$JAVA_HOME/bin' to your PATH environment
info AppiumDoctor ###
info AppiumDoctor
info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!
info AppiumDoctor
环境常见问题解决:
✖ Xcode Command Line Tools are NOT installed!
$ xcode-select --install #按照提示安装即可
WARN AppiumDoctor ✖ ANDROID_HOME is NOT set!
建议安装AS,可以解决其他Android环境的其他问题Android Studio
在.bash_profile/.zshrc文件中设置JAVA和Android环境变量
#android sdk
export ANDROID_HOME=~/Library/Android/sdk
export PATH="$HOME/.yarn/bin:$PATH"
#java_home
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib
以上都很简单,下面重点来了。
11、appium服务端安装:安装appium-xcuitest-driver依赖,进入WebDriverAgent安装目录,运行bootstrap。
$ cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent (如果WebDriverAgent 所在路径和此不同,请自行查找)
$ mkdir -p Resources/WebDriverAgent.bundle
$ sh ./Scripts/bootstrap.sh
11.1、用Xcode打开WebDriverAgent,并且编译进入WebDriverAgent 文件夹,可用如下方法:
若果编译的过程中有语法错误,重新安装第10步。
11.4、建立服务WebDriverAgent:进入WebDriverAgent 文件夹,建立服务。
$ cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
$ xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test
运行到最后会发现
而iphone多了一个WebDriverAgentRunner的app。手动启动那个app的时候
原因是我们手机并并没有信任这个apple id的开发者,到设置-通用-设备管理(描述文件) 信任你的apple id就可以了。再次运行上述命令,看到如下图,就成功了,
12. 安装appium client端:appium client有ruby,python,java三个版本,可自行选择自己喜欢的安装即可,这里只说Python版安装,具体见下面查看资料3。
pip安装
$ pip install Appium-Python-Client
如果安装过程出现 could not create ‘/Library/Python/2.7/site-packages/appium’: Permission denied 错误,
使用 pip install Appium-Python-Client –user 命令可以安装成功
源码安装 在Pipy上下载源码安装
$ tar -xvf Appium-Python-Client-X.X.tar.gz
$ cd Appium-Python-Client-X.X
$ python setup.py install
github安装
$ git clone https://github.com/appium/python-client.git
$ cd python-client
$ python setup.py install
13、测试流程:
下载测试代码并且测试,网上一个简单的测试代码:erduoniba/appium_ios_sample_code,自己写可以参考Python + Appium+ IOS自动化测试。
对于如何利用app-inspector获取界面元素,请参考app-inspector官方文档。
13.1、先启动appium服务器:
$ appium -U xxxxxxx // xxxxx 真机设备ID
13.2、接下来连上真机 执行测试用例代码:
$ cd sample-code/examples/python
$ python ios_simple_device.py
test_scroll (__main__.SimpleIOSTests) ... ok
----------------------------------------------------------------------
Ran 1 test in 30.421s
OK
踩过的坑
1、1 - 10步安装过程中的权限问题:chmod -R 777 pathForFile,然后重新运行该命令。
2、第11.4步我在安装的时候一直没有Listening on USB这一行信息,不过服务正常可以使用。
3、在测试过程中一直提示第11.4步第一个图的错误的话,拔数据线,关测试机,重启,重插。
参考资料
1、Appium在 MAC 上搭建 appium1.6.3 过程:https://testerhome.com/topics/6962
2、appium1-macOS10.12下如何丝滑的使用appium?:http://www.jianshu.com/p/05943804c25e
3、Appiumappium + iOS10.2 + Xcode8.2.1 + React Native 完成自动化测试:https://testerhome.com/topics/7775
网友评论