關(guān)于Appium的坑

? ? 作為一個(gè)IT測(cè)試工程師,由于種種原因,又開始關(guān)注UI自動(dòng)化了,APP自動(dòng)化,iOS和Android的,幾個(gè)月前,搞了一段兒時(shí)間,接觸到了Android官網(wǎng)的UIAutomator和Appium。大家比較喜歡Appium,所以,再次接觸一下,把以前的case和Demo拿出來,試驗(yàn)了一下,結(jié)果各種跑不通,最后一次接觸的時(shí)候,appium更新到了1.3,現(xiàn)在都1.4.13了。

? ? 這個(gè)開源框架是從去年開始搞的,bug一大堆,唯一的好處就是,社區(qū)特別活躍,一直在修bug,從昨天開始,一直在調(diào)試。總算有點(diǎn)兒成果。

? ? 本人有個(gè)Android手機(jī),但是一直沒辦法root,所以調(diào)試起來比較麻煩。還是先說說iOS吧。

? ? 坑1:模擬器無法啟動(dòng),報(bào)錯(cuò):ideviceinstaller的問題

? ? 不知道是從哪個(gè)版本開始,appium喜歡上了ideviceinstaller,后來Google一下,發(fā)現(xiàn)這個(gè)工具是可以自動(dòng)打包和安裝app的開源工具。

報(bào)錯(cuò):

info: [debug] Couldn't find ideviceinstaller, trying built-in at /Users/eclose/Projects/appium/build/libimobiledevice-macosx/ideviceinstaller

error: Could not initialize ideviceinstaller; make sure it is installed and works on your system

info: [debug] Cleaning up appium session

error: Failed to start an Appium session, err was: Error: Could not initialize ideviceinstaller; make sure it is installed and works on your system

我當(dāng)時(shí)查看了我的目錄,是有這個(gè)文件的,當(dāng)時(shí)非常不明白為啥沒有識(shí)別。又Google了一下,看了一下社區(qū)的bug內(nèi)容,其中的回復(fù)是這樣的:

ideviceinstaller is a system requirement for working on ios real devices. we bundle one but it isn't always built for the same platform you're using.

說的很明白了,確實(shí)提供了一個(gè)編譯好的,但是平臺(tái)不一樣,有可能不識(shí)別,例如我是在mac上,就不好用了,所以,自己編譯吧!mac上最好用的安裝工具無非就是brew了

brew install ideviceinstaller

結(jié)果是各種報(bào)錯(cuò),因?yàn)楹枚嘁蕾嚩荚诤芾系墓倬W(wǎng)上去獲取和本地編譯,而這些網(wǎng)站有些都掛掉了,例如第一個(gè)依賴:libxml2,我一開始的解決方案是自己Google,下載編譯。最后終于搞定了。滿懷信心的跑了一下appium,結(jié)果報(bào)錯(cuò):

Segmentation fault: 11

好像是程序core了一樣。Google一下,有篇帖子說,是因?yàn)閎rew的問題,所以,想update一下,結(jié)果各種沒反應(yīng)。沒辦法,去brew的官網(wǎng)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

It appears Homebrew is already installed. If your intent is to reinstall you

should do the following before running this installer again:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

The current contents of /usr/local are bin Cellar chromedriver CODEOFCONDUCT.md CONTRIBUTING.md etc include lib Library LICENSE.txt mysql mysql-5.6.20-osx10.8-x86_64 mysql-connector-python-1.2.3 node_modules opt README.md share SUPPORTERS.md .git .gitignore

沒辦法,我已經(jīng)安裝過了,所以手動(dòng)執(zhí)行一下uninstall

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

卸載前,最好備份一下,備份哪些東西,執(zhí)行命令時(shí),會(huì)提示你,它會(huì)刪除那些東西,如果你覺得那些目錄的東西你沒用了,那就直接輸入y,就行了,我是備份了一下

然后,再次執(zhí)行命令:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝后,再次執(zhí)行命令:

brew install ideviceinstaller

這次安裝的時(shí)候,你會(huì)發(fā)現(xiàn),安裝的依賴都是在brewHome下載的,如果早更新brew,我得節(jié)省2個(gè)小時(shí),哎!坑啊!

安裝后,ideviceinstaller應(yīng)該是可以使用了,但是后面還有坑,繼續(xù)!

此時(shí)我遇到一種情況,非常詭異,就是應(yīng)用一直都在閃退,重復(fù)啟動(dòng),重復(fù)閃退,對(duì)了,這里說一下,ideviceinstaller是在真機(jī)上運(yùn)行時(shí)會(huì)用到的一個(gè)工具,現(xiàn)在我說的也是在真機(jī)上運(yùn)行遇到的問題,一會(huì)兒再說一下在模擬器上運(yùn)行遇到的問題。

對(duì)于閃退的問題,其實(shí)在console的日志里可以看到,是因?yàn)槭謾C(jī)沒有開啟uiautomation的開關(guān),開啟過程是:

設(shè)置-->開發(fā)者-->Enable UI Automation?

這樣應(yīng)該就沒有問題了!

在真機(jī)上還有一個(gè)坑!

啟動(dòng)時(shí),會(huì)報(bào)錯(cuò):

Instruments crashed on startup

Instruments exited with code 253

有兩個(gè)原因,一個(gè)原因是Instruments已經(jīng)啟動(dòng)了一個(gè)了,所以,你可以把Xcode退出一下,應(yīng)該有正在運(yùn)行的應(yīng)用。另外一個(gè):如果看到類似于

Targetfailed to run: Permission to debug xxxx was denied

那應(yīng)該就是權(quán)限問題,因?yàn)椋挥衐ebug的app才可以運(yùn)行,不像Android中的uiautomator,可以搞任何安裝的應(yīng)用。或者說,只能搞你自己簽名過的

下面說一下模擬器的坑:

現(xiàn)在我用的最新版本,1.4.13,需要在設(shè)置里或者運(yùn)行的使用,加個(gè)參數(shù)--native-instruments-lib,UI版本的,在Developer Settings --> Custom Server Flags 里添加。

另外一個(gè),在模擬器里面啟動(dòng)時(shí),也會(huì)出現(xiàn)重復(fù)crash的問題。這時(shí),運(yùn)行一下

appium-doctor.js,我當(dāng)時(shí)是沒有安裝Xcode Command Line Tools

好了,差不多就這些了!

還有一個(gè)東西,Safari,appium啟動(dòng)是通過了一個(gè)代理app,SafariLauncher,這個(gè)app自己編譯一下把debug的.app包,用zip打包放到appium的目錄下,就可以使用了。有個(gè)自動(dòng)跳轉(zhuǎn)的時(shí)間,自己可以調(diào)一下

最后,Appuim還是不太穩(wěn)定,有兩個(gè)外因:一個(gè)是iOS的Xcode一直在更新,每次更新都有很多問題需要兼容,第二個(gè):現(xiàn)在hybrid的興起,有些東西混合的太多了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容