基于Macaca实现的iOS Monkey测试实现

首先,这个monkey的实现,并不是我写的,我只是按照Testerhome上面大神的教程实施的,我只不过来记录一下,自己在实现这个方案时,是如何操作,遇到何种坑,以及是如何解决的。

原帖传送门>>> https://testerhome.com/topics/8025

好了,开始交代我的实施。

实施工具:mac电脑一台,iPhone手机一部;

开发环境:OS X 10.12.3

                   Xcode 8.3.2

                   Eclipse for OS X 4.6.3、maven

关于Xcode和eclipse、maven环境的配置、这里就不介绍了,网上一堆教程,现在开始准备Macaca的环境。

一、准备Macaca环境

1、安装usbmuxd

$ brew install usbmuxd

2、安装ios-webkit-debug-proxy

$ brew install ios-webkit-debug-proxy

3、安装ios-deploy

$ npm i ios-deploy -g

4、安装ideviceinstaller

ideviceinstall如果需要用命令行安装的话,使用不了,具体我也没试,既然原作者说了,那就按他建议的来,直接到GitHub上下载源代码到本地,然后编译运行。

ideviceinstall GitHub地址:https://github.com/libimobiledevice/libimobiledevice

4.1、在编译之前,先将设置以下内容到环境变量中:

LD_LIBRARY_PATH=/usr/local/opt/openssl/lib:"${LD_LIBRARY_PATH}"

CPATH=/usr/local/opt/openssl/include:"${CPATH}"

PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:"${PKG_CONFIG_PATH}"

export LD_LIBRARY_PATH CPATH PKG_CONFIG_PATH

打开终端,输入 $ sudo vim etc/profile ,然后按i进入编辑模式,将以上内容添加到环境变量,然后按esc退出编辑模式,输入 “:wq!”保存并退出。

4.2、编译安装ideviceinstall

打开终端并进入到libimobiledevice工程目录,分别执行:

./autogen.sh

make

sudo make install

5、安装carthage

$ brew install carthage

6、安装macacajs 包括,macaca-cli macaca-ios

$ npm install macaca-cli@1.2.2  -g

$ npm install macaca-ios@1.0.66  -g

原文没有指定安装版本,但实际上隐藏着一个大坑,因为Macaca在近期做了重构,现在新版本是2.几的版本了,但是iOS monkey作者并没有支持到Macaca的新版本(我之前就毫无意外地掉这个坑了,最后通过跟Macaca作者和iOSmonkey原文作者沟通,才晓得),所以如果想要使用这套环境,要么就等iOS monkey的作者支持Macaca最新版本,要么就安装旧版本了。

好了,安装完成之后,检测macaca环境,确保无报错(至少iOS的环境应该都是好的了)

$ macaca doctor

检查无误之后,到此,我们的Macaca环境就完事了。

二、WebDriverAgent项目重签名

2.1、下载WebDriverAgent

GitHub地址:https://github.com/facebook/WebDriverAgent

2.2、WebDriverAgent项目重签名

2.2.1、使用xcode打开保存在本地的WebDriverAgent项目,在项目资源列表点击工程文件、然后在TARGETS上,分别点中那五个targets,然后在general或者build setting上修改bundle ID并选择签名的证书,bundle ID修改就是把原来的“facebook”字样修改掉,比如换成什么abc都行,只要后面选择证书的时候,能够不报错就行。如下图1:


图1 修改bundle ID和选择签名的证书

记得是5个都要改,一个个检查吧。完了之后,打开终端,进入WDA工程目录,执行

$ ./Scripts/bootstrap.sh

build完成以后,之前以为就可以完成WDA的配置了,就进入下一步了,然后,只是又不知不觉掉了一个坑而已,好了,继续往下看往下搞。

2.2.2、Xcode->file->Open Quickly,输入/usr/local/lib/node_modules/macaca-ios/node_modules/webdriveragent/WebDriverAgent/WebDriverAgent.xcodeproj ,回车

这里会发现,在这个路径下,又有一个WDA工程,然后查看工程设置,发现bundle ID和签名都没修过过,按照2.2.1步骤里面修过bundle ID 和选择签名,完成之后,才是真的完成了WDA的配置。

三、编译、执行iOS Monkey

3.1、编译iOS Monkey

iOS Monkey开源工程下载地址:https://github.com/baozhida/iosMonkey

下载到本地后,由于这个开源项目是maven工程,所以编译之前先得把maven环境弄好,这里不再赘述。

终端进入到工程目录,执行

$ maven install

结果,发现报错了!!!Failed to execute goal on project iosMonkey: Could not resolve dependencies for project iosMonkey:iosMonkey:jar:1.0: Failure to find macaca.webdriver.client:macacaclient:jar:2.0.4 inhttps://repo.maven.apache.org/maven2was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced

看一下工程上的Maven Dependencies,没有找到macacaclient-2.0.4.jar这个jar包,update maven工程,也仍然没有下载得回来,但是pom.xml上,是明确配置有这个依赖的;网上一查,原来是macaca在maven默认的仓库下架了,所以会提示找不到,当时尝试修改maven的settings.xml,使用阿里的镜像,但是好像并没有生效,搞不懂为啥,尝试多次仍然搞不定之后,就换了个思路,就是把jar包下载回来,从本地导入。

到 http://jcenter.bintray.com 下载macacaclient 2.0.1版本,然后先修改pom.xml上macacaclient的配置,即把版本号修改成2.0.1就好(这里说一下为什么要用2.0.1版本,2.0.1是原作者使用的版本,前面也说过,macaca进行了重构,使用最新版本可能会有隐藏的坑,为了别再掉入类似的坑,还是直接选择原作者当时使用的版本了),然后,执行:

$ mvn install:install-file -DgroupId=macaca.webdrivier.client -DartifactId=macacaclient -Dversion=2.0.1 -Dfile=你的路径/macacaclient-2.0.1.jar -Dpackaging=jar -DgeneratePom=true

这时候,我们再看一下工程目录下的Maven Dependencies,已经有macacaclient-2.0.1.jar了,这时候再次终端执行 mvn install 就可以编译成功了,target下生成iosMonkey-1.0.jar。

3.2、执行iOS Monkey

先在xcode把WDA跑起来:xcode->produck->test

终端进入iOS Monkey工程目录,执行

$ macaca server  --verbose

新开另外一个终端窗口,同时也进入iOS Monkey工程目录,执行

$ java -jar [iosMonkey.jar Path] -u [设备的UDID] -b [测试App的BundleID] -port [macaca服务端口,可选] -proxyport[usb代理端口,可选]

设备的udid可以通过iTunes或者iTools获取,服务端口和代理端口可以不设置,使用默认的就好了,命令执行之后,应该就能跑起来了,另外,如果需要登录,建议先手动登录成功后,再执行monkey。效果如下:

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,315评论 25 707
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,714评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,569评论 18 139
  • 我曾以为这世间的爱,只有一种残忍长大后才发现,残忍不过是大人的贪心。
    Fetiz阅读 195评论 0 0
  • 六月初,北京已是十足的夏天,沈阳的清晨却仍是透着些许凉意,街上像我只穿一短袖的并不多,我有些懊悔自己的大意,到医院...
    cherryxue阅读 504评论 0 0