基于Macaca實(shí)現(xiàn)的iOS Monkey測(cè)試實(shí)現(xiàn)

首先,這個(gè)monkey的實(shí)現(xiàn),并不是我寫的,我只是按照Testerhome上面大神的教程實(shí)施的,我只不過來記錄一下,自己在實(shí)現(xiàn)這個(gè)方案時(shí),是如何操作,遇到何種坑,以及是如何解決的。

原帖傳送門>>> https://testerhome.com/topics/8025

好了,開始交代我的實(shí)施。

實(shí)施工具:mac電腦一臺(tái),iPhone手機(jī)一部;

開發(fā)環(huán)境:OS X 10.12.3

? ? ? ? ? ? ? ? ? ?Xcode 8.3.2

? ? ? ? ? ? ? ? ? ?Eclipse for OS X 4.6.3、maven

關(guān)于Xcode和eclipse、maven環(huán)境的配置、這里就不介紹了,網(wǎng)上一堆教程,現(xiàn)在開始準(zhǔn)備Macaca的環(huán)境。

一、準(zhǔn)備Macaca環(huán)境

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上下載源代碼到本地,然后編譯運(yùn)行。

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

4.1、在編譯之前,先將設(shè)置以下內(nèi)容到環(huán)境變量中:

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進(jìn)入編輯模式,將以上內(nèi)容添加到環(huán)境變量,然后按esc退出編輯模式,輸入 “:wq!”保存并退出。

4.2、編譯安裝ideviceinstall

打開終端并進(jìn)入到libimobiledevice工程目錄,分別執(zhí)行:

./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

原文沒有指定安裝版本,但實(shí)際上隱藏著一個(gè)大坑,因?yàn)镸acaca在近期做了重構(gòu),現(xiàn)在新版本是2.幾的版本了,但是iOS monkey作者并沒有支持到Macaca的新版本(我之前就毫無意外地掉這個(gè)坑了,最后通過跟Macaca作者和iOSmonkey原文作者溝通,才曉得),所以如果想要使用這套環(huán)境,要么就等iOS monkey的作者支持Macaca最新版本,要么就安裝舊版本了。

好了,安裝完成之后,檢測(cè)macaca環(huán)境,確保無報(bào)錯(cuò)(至少iOS的環(huán)境應(yīng)該都是好的了)

$ macaca doctor

檢查無誤之后,到此,我們的Macaca環(huán)境就完事了。

二、WebDriverAgent項(xiàng)目重簽名

2.1、下載WebDriverAgent

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

2.2、WebDriverAgent項(xiàng)目重簽名

2.2.1、使用xcode打開保存在本地的WebDriverAgent項(xiàng)目,在項(xiàng)目資源列表點(diǎn)擊工程文件、然后在TARGETS上,分別點(diǎn)中那五個(gè)targets,然后在general或者build setting上修改bundle ID并選擇簽名的證書,bundle ID修改就是把原來的“facebook”字樣修改掉,比如換成什么abc都行,只要后面選擇證書的時(shí)候,能夠不報(bào)錯(cuò)就行。如下圖1:


圖1 修改bundle ID和選擇簽名的證書

記得是5個(gè)都要改,一個(gè)個(gè)檢查吧。完了之后,打開終端,進(jìn)入WDA工程目錄,執(zhí)行

$ ./Scripts/bootstrap.sh

build完成以后,之前以為就可以完成WDA的配置了,就進(jìn)入下一步了,然后,只是又不知不覺掉了一個(gè)坑而已,好了,繼續(xù)往下看往下搞。

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

這里會(huì)發(fā)現(xiàn),在這個(gè)路徑下,又有一個(gè)WDA工程,然后查看工程設(shè)置,發(fā)現(xiàn)bundle ID和簽名都沒修過過,按照2.2.1步驟里面修過bundle ID 和選擇簽名,完成之后,才是真的完成了WDA的配置。

三、編譯、執(zhí)行iOS Monkey

3.1、編譯iOS Monkey

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

下載到本地后,由于這個(gè)開源項(xiàng)目是maven工程,所以編譯之前先得把maven環(huán)境弄好,這里不再贅述。

終端進(jìn)入到工程目錄,執(zhí)行

$ maven install

結(jié)果,發(fā)現(xiàn)報(bào)錯(cuò)了?。?!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這個(gè)jar包,update maven工程,也仍然沒有下載得回來,但是pom.xml上,是明確配置有這個(gè)依賴的;網(wǎng)上一查,原來是macaca在maven默認(rèn)的倉庫下架了,所以會(huì)提示找不到,當(dāng)時(shí)嘗試修改maven的settings.xml,使用阿里的鏡像,但是好像并沒有生效,搞不懂為啥,嘗試多次仍然搞不定之后,就換了個(gè)思路,就是把jar包下載回來,從本地導(dǎo)入。

到?http://jcenter.bintray.com?下載macacaclient 2.0.1版本,然后先修改pom.xml上macacaclient的配置,即把版本號(hào)修改成2.0.1就好(這里說一下為什么要用2.0.1版本,2.0.1是原作者使用的版本,前面也說過,macaca進(jìn)行了重構(gòu),使用最新版本可能會(huì)有隱藏的坑,為了別再掉入類似的坑,還是直接選擇原作者當(dāng)時(shí)使用的版本了),然后,執(zhí)行:

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

這時(shí)候,我們?cè)倏匆幌鹿こ棠夸浵碌腗aven Dependencies,已經(jīng)有macacaclient-2.0.1.jar了,這時(shí)候再次終端執(zhí)行 mvn install 就可以編譯成功了,target下生成iosMonkey-1.0.jar。

3.2、執(zhí)行iOS Monkey

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

終端進(jìn)入iOS Monkey工程目錄,執(zhí)行

$ macaca server ?--verbose

新開另外一個(gè)終端窗口,同時(shí)也進(jìn)入iOS Monkey工程目錄,執(zhí)行

$ java -jar [iosMonkey.jar Path] -u [設(shè)備的UDID] -b [測(cè)試App的BundleID] -port [macaca服務(wù)端口,可選] -proxyport[usb代理端口,可選]

設(shè)備的udid可以通過iTunes或者iTools獲取,服務(wù)端口和代理端口可以不設(shè)置,使用默認(rèn)的就好了,命令執(zhí)行之后,應(yīng)該就能跑起來了,另外,如果需要登錄,建議先手動(dòng)登錄成功后,再執(zhí)行monkey。效果如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評(píng)論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評(píng)論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 我曾以為這世間的愛,只有一種殘忍長(zhǎng)大后才發(fā)現(xiàn),殘忍不過是大人的貪心。
    Fetiz閱讀 220評(píng)論 0 0
  • 六月初,北京已是十足的夏天,沈陽的清晨卻仍是透著些許涼意,街上像我只穿一短袖的并不多,我有些懊悔自己的大意,到醫(yī)院...
    cherryxue閱讀 545評(píng)論 0 0

友情鏈接更多精彩內(nèi)容