首先,這個(gè)monkey的實(shí)現(xiàn)唉韭,并不是我寫的监署,我只是按照Testerhome上面大神的教程實(shí)施的,我只不過來記錄一下纽哥,自己在實(shí)現(xiàn)這個(gè)方案時(shí)钠乏,是如何操作,遇到何種坑春塌,以及是如何解決的晓避。
原帖傳送門>>> https://testerhome.com/topics/8025
好了簇捍,開始交代我的實(shí)施。
實(shí)施工具:mac電腦一臺俏拱,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最新版本揣非,要么就安裝舊版本了。
好了躲因,安裝完成之后早敬,檢測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:
記得是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 罪治,回車
這里會發(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ò)了8印?陶铩!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)的倉庫下架了浮入,所以會提示找不到,當(dāng)時(shí)嘗試修改maven的settings.xml羊异,使用阿里的鏡像事秀,但是好像并沒有生效,搞不懂為啥野舶,嘗試多次仍然搞不定之后易迹,就換了個(gè)思路,就是把jar包下載回來平道,從本地導(dǎo)入睹欲。
到?http://jcenter.bintray.com?下載macacaclient 2.0.1版本,然后先修改pom.xml上macacaclient的配置,即把版本號修改成2.0.1就好(這里說一下為什么要用2.0.1版本窘疮,2.0.1是原作者使用的版本袋哼,前面也說過,macaca進(jìn)行了重構(gòu)闸衫,使用最新版本可能會有隱藏的坑涛贯,為了別再掉入類似的坑,還是直接選擇原作者當(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í)候,我們再看一下工程目錄下的Maven 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 [測試App的BundleID] -port [macaca服務(wù)端口,可選] -proxyport[usb代理端口,可選]
設(shè)備的udid可以通過iTunes或者iTools獲取,服務(wù)端口和代理端口可以不設(shè)置宙帝,使用默認(rèn)的就好了丧凤,命令執(zhí)行之后募闲,應(yīng)該就能跑起來了步脓,另外,如果需要登錄浩螺,建議先手動登錄成功后靴患,再執(zhí)行monkey。效果如下: