本文章主要是使用Appium + Robotframework在Python3環(huán)境下成功運(yùn)行了一個(gè)安卓App的自動(dòng)化測(cè)試?yán)印?br> 鑒于整個(gè)環(huán)境配置方面有不少坑,所以總結(jié)一下。
注意:國(guó)內(nèi)很多博客文章用的Robotframework還都是基于Python2的版本,原因是界面化工具RIDE只支持python2,但是Robotframework的官方nokia公司早就推出了支持Python3的圖形界面編輯工具RED,強(qiáng)烈推薦,誰(shuí)用誰(shuí)知道!下載鏈接:
https://github.com/nokia/RED
使用方面請(qǐng)盡量參考官方的文檔,網(wǎng)上的各種博客寫(xiě)的都不如官網(wǎng)清楚,看不懂英文的請(qǐng)使用網(wǎng)頁(yè)翻譯工具。
各種安裝
- 安裝Python 3
教程很多,自己搜 - 安裝Java JDK
教程很多,自己搜。我裝的是1.8版本 - 安裝Robotframework 3.0
pip install robotframework - 安裝RED https://github.com/nokia/RED
- 安裝Appium https://github.com/appium/appium-desktop/releases/tag/v1.13.0
- 安裝Android Studio https://developer.android.com/studio
注:雖然理論上來(lái)說(shuō)不需要裝整個(gè)Android Studio,只需要裝相關(guān)的開(kāi)發(fā)工具就好了,但是為了懶省事,還是建議裝上它。因?yàn)槲乙婚_(kāi)始就只是下載的開(kāi)發(fā)工具,但沒(méi)下載全,所以折騰了老半天。 - 安卓模擬器
我裝的是夜神模擬器。 - 相關(guān)庫(kù)的安裝,基本上pip install就好了
pip install robotframework-selenium2library
pip install Appium-Python-Client
pip install robotframework-appiumlibrary
配置環(huán)境變量
Mac系統(tǒng)的環(huán)境變量,加載順序?yàn)椋?br>
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc
/etc/profile和/etc/paths是系統(tǒng)級(jí)別的,系統(tǒng)啟動(dòng)就會(huì)加載,后面幾個(gè)是當(dāng)前用戶級(jí)的環(huán)境變量。后面3個(gè)按照從前往后的順序讀取,如果/.bash_profile文件存在,則后面的幾個(gè)文件就會(huì)被忽略不讀了,如果/.bash_profile文件不存在,才會(huì)以此類推讀取后面的文件。~/.bashrc沒(méi)有上述規(guī)則,它是bash shell打開(kāi)的時(shí)候載入的。
建議配置在用戶級(jí)別的環(huán)境變量~/.bash_profile中。
cd ~
open -e .bash_profile
根據(jù)你自己機(jī)器上JAVA和Android tools的目錄,設(shè)置環(huán)境變量。
給出我的配置作為參考,你的不一定和我的完全一樣。
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
CLASS_PATH="$JAVA_HOME/LIB"
export PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME
export ANDROID_HOME=/Users/cynthia/Library/Android/sdk
export ANDROID_TOOLS="$ANDROID_HOME/tools/"
export ANDROID_BUILD_TOOLS="$ANDROID_HOME/build-tools/28.0.3/"
export PATH="$ANDROID_HOME/:$PATH"
export PATH="$ANDROID_HOME/platform-tools/:$PATH"
export PATH="$ANDROID_HOME/tools/:$PATH"
export PATH="$ANDROID_HOME/emulator/:$PATH"
export PATH="$ANDROID_BUILD_TOOLS:$PATH"
然后source .bash_profile讓環(huán)境變量生效。
現(xiàn)在試試:
adb -version
應(yīng)該有版本號(hào)顯示,而不是command not found。
試試:
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
echo $ANDROID_HOME
/Users/cynthia/Library/Android/sdk
看來(lái)環(huán)境變量都設(shè)置好了。
模擬器配置
但是這時(shí)候運(yùn)行adb devices查看鏈接的移動(dòng)設(shè)備,如果是使用模擬器會(huì)發(fā)現(xiàn)列表中沒(méi)有模擬器的設(shè)備信息,以本人使用的夜神模擬器為例,運(yùn)行如下命令即可:
- 先到模擬器中打開(kāi)開(kāi)發(fā)者模式( 夜神模擬器:設(shè)置->關(guān)于平板電腦->點(diǎn)擊5次版本號(hào) 進(jìn)入開(kāi)發(fā)者模式 )
- 右鍵點(diǎn)擊夜神模擬器的app,選擇顯示包內(nèi)容,進(jìn)入到MacOS文件夾中,cmd + option + c 復(fù)制文件夾路徑。
命令行cd到MacOS文件夾下,但是這個(gè)路徑中可能含有空格,此時(shí)要你自己添加上轉(zhuǎn)義符才能cd成功。之后,運(yùn)行命令
adb connect 127.0.0.1:62001
現(xiàn)在再運(yùn)行adb devices命令就能看到設(shè)備信息了。
設(shè)置Appium
- 打開(kāi)Appium,點(diǎn)擊齒輪一樣的設(shè)置按鈕,這樣設(shè)置:
Server Address: 127.0.0.1 Port 4723
? Override Existing Sessions
Server Address設(shè)置為本地ip,端口號(hào)不變
Override Existing Sessions勾選上。
點(diǎn)擊安卓小圖標(biāo),在App Path一欄中,填上你想要測(cè)試的apk的本地路徑,例如:/User/cynthia/testapp-debug.apk
安卓版本選擇模擬器對(duì)應(yīng)的安卓版本。例如我的夜神模擬器是4.4版本,就選中它。點(diǎn)擊Launch
在RED中寫(xiě)一個(gè)示例Case
- 打開(kāi)RED,F(xiàn)ile-new-Robot Project,新建一個(gè)項(xiàng)目。
-
打開(kāi)這個(gè)項(xiàng)目下的red.xml文件,點(diǎn)擊General。一般情況下它會(huì)自動(dòng)識(shí)別Robotframework,如圖所示:
image.png
如果沒(méi)有識(shí)別出來(lái)可以根據(jù)該頁(yè)面的提示,在Preferences-Installed frameworks里配置。

點(diǎn)擊Add,輸入你Python的安裝路徑即可,例如我的是:
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/
- 編寫(xiě)用例
在項(xiàng)目上郵件,New-Robot Test Suite,輸入文件名,新建一個(gè).robot文件。
進(jìn)入文件的Source模式,輸入:
*** Setting ***
Library AppiumLibrary
*** Test Cases ***
1.打開(kāi)app
open Application http://127.0.0.1:4723/wd/hub platformName=Android platformVersion=4.4.2 deviceName=127.0.0.1:62001 app=/User/cynthia/testapp-debug.apk
注意,此時(shí)你的Library AppiumLibrary可能是紅色波浪線,說(shuō)明這個(gè)庫(kù)沒(méi)有被引入。你可以鼠標(biāo)移到上面,Ctrl + 1引入。
可以在red.xml文件的Referenced libraries里查看庫(kù)是否被引入。
當(dāng)然你也可以設(shè)置自動(dòng)引入,方法是,打開(kāi)Preference(Mac下是RED-Preference,Windows操作系統(tǒng)下是Window-Preference)
然后如下圖設(shè)置,畫(huà)紅框的地方打勾即可:


-
運(yùn)行用例
很簡(jiǎn)單,只要在用例所在的robot文件上,點(diǎn)擊左上角的綠色三角形按鈕即可。
此時(shí)你看到appium的窗口閃現(xiàn)一些文字,用例運(yùn)行起來(lái)了,然后在RED界面的Console上可以看到運(yùn)行結(jié)果:
image.png 可能遇到的問(wèn)題
- 出現(xiàn)如下報(bào)錯(cuò)
WebDriverException: Message: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"]} and you sent ["capabilities","desiredCapabilities"]
參見(jiàn)這個(gè)解答:https://github.com/SeleniumHQ/selenium/issues/4017#issuecomment-302030078%5D
簡(jiǎn)單點(diǎn)說(shuō)就是:
找到你的Python安裝路徑下這個(gè)文件
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py
你的安裝目錄可能和我的不一樣,注意不要完全復(fù)制我的路徑。
修改:
parameters = {"capabilities": w3c_caps,
"desiredCapabilities": capabilities}
==>
parameters = {"desiredCapabilities": capabilities}
找不到路徑
error: Failed to start an Appium session, err was: Error: Could not find aapt. Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
此時(shí)請(qǐng)檢查你的環(huán)境變量設(shè)置是否正確。
可以嘗試在命令行直接輸入aapt,如果提示command not found說(shuō)明還是沒(méi)有配置正確。
如果命令行運(yùn)行沒(méi)有問(wèn)題,嘗試把a(bǔ)ppium關(guān)閉后重新啟動(dòng)。找不到模擬器
Original error: Could not find a connected Android device.
此時(shí)檢查你的模擬器有無(wú)正確開(kāi)啟。

