iOS自动化测试:mac下iOS10 appium测试环境的搭建

概述

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

设置 ANDROID_HOME 路径

设置 JAVA_HOME 路径

Mac OS X 下查看和设置JAVA_HOME

在.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 文件夹,可用如下方法:

11.2、编译WebDriverAgentLib

11.3、编译WebDriverAgentRunner

若果编译的过程中有语法错误,重新安装第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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容