Appium + Python 3 + Robotframework + Mac 實(shí)現(xiàn)App的自動(dòng)化測(cè)試

本文章主要是使用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)上的各種博客寫的都不如官網(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)的開發(fā)工具就好了,但是為了懶省事呼股,還是建議裝上它。因?yàn)槲乙婚_始就只是下載的開發(fā)工具,但沒下載全,所以折騰了老半天。
  • 安卓模擬器
    我裝的是夜神模擬器揖赴。
  • 相關(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沒有上述規(guī)則造寝,它是bash shell打開的時(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)列表中沒有模擬器的設(shè)備信息孔庭,以本人使用的夜神模擬器為例,運(yùn)行如下命令即可:

  1. 先到模擬器中打開開發(fā)者模式( 夜神模擬器:設(shè)置->關(guān)于平板電腦->點(diǎn)擊5次版本號(hào) 進(jìn)入開發(fā)者模式 )
  2. 右鍵點(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

  1. 打開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勾選上。

  1. 點(diǎn)擊安卓小圖標(biāo)纹笼,在App Path一欄中纹份,填上你想要測(cè)試的apk的本地路徑,例如:/User/cynthia/testapp-debug.apk
    安卓版本選擇模擬器對(duì)應(yīng)的安卓版本廷痘。例如我的夜神模擬器是4.4版本蔓涧,就選中它。

  2. 點(diǎn)擊Launch

在RED中寫一個(gè)示例Case

  1. 打開RED笋额,F(xiàn)ile-new-Robot Project元暴,新建一個(gè)項(xiàng)目。
  2. 打開這個(gè)項(xiàng)目下的red.xml文件兄猩,點(diǎn)擊General茉盏。一般情況下它會(huì)自動(dòng)識(shí)別Robotframework,如圖所示:


    image.png

如果沒有識(shí)別出來(lái)可以根據(jù)該頁(yè)面的提示枢冤,在Preferences-Installed frameworks里配置鸠姨。


image.png

點(diǎn)擊Add,輸入你Python的安裝路徑即可淹真,例如我的是:
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/

  1. 編寫用例
    在項(xiàng)目上郵件讶迁,New-Robot Test Suite,輸入文件名核蘸,新建一個(gè).robot文件巍糯。
    進(jìn)入文件的Source模式,輸入:
*** Setting ***
Library    AppiumLibrary

*** Test Cases ***
1.打開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ù)沒有被引入。你可以鼠標(biāo)移到上面徙鱼,Ctrl + 1引入宅楞。

可以在red.xml文件的Referenced libraries里查看庫(kù)是否被引入。

當(dāng)然你也可以設(shè)置自動(dòng)引入,方法是咱筛,打開Preference(Mac下是RED-Preference,Windows操作系統(tǒng)下是Window-Preference)
然后如下圖設(shè)置杆故,畫紅框的地方打勾即可:


image.png
image.png
  1. 運(yùn)行用例
    很簡(jiǎn)單迅箩,只要在用例所在的robot文件上,點(diǎn)擊左上角的綠色三角形按鈕即可处铛。
    此時(shí)你看到appium的窗口閃現(xiàn)一些文字饲趋,用例運(yùn)行起來(lái)了,然后在RED界面的Console上可以看到運(yùn)行結(jié)果:


    image.png
  2. 可能遇到的問題

  • 出現(xiàn)如下報(bào)錯(cuò)
    WebDriverException: Message: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"]} and you sent ["capabilities","desiredCapabilities"]

參見這個(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ō)明還是沒有配置正確龄砰。
    如果命令行運(yùn)行沒有問題,嘗試把a(bǔ)ppium關(guān)閉后重新啟動(dòng)讨衣。

  • 找不到模擬器
    Original error: Could not find a connected Android device.
    此時(shí)檢查你的模擬器有無(wú)正確開啟换棚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市反镇,隨后出現(xiàn)的幾起案子固蚤,更是在濱河造成了極大的恐慌,老刑警劉巖歹茶,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夕玩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惊豺,警方通過(guò)查閱死者的電腦和手機(jī)燎孟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扮叨,“玉大人缤弦,你說(shuō)我怎么就攤上這事〕勾牛” “怎么了碍沐?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)衷蜓。 經(jīng)常有香客問我累提,道長(zhǎng),這世上最難降的妖魔是什么磁浇? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任斋陪,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘无虚。我一直安慰自己缔赠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布友题。 她就那樣靜靜地躺著嗤堰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪度宦。 梳的紋絲不亂的頭發(fā)上踢匣,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音戈抄,去河邊找鬼离唬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛划鸽,可吹牛的內(nèi)容都是我干的输莺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼裸诽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼模闲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起崭捍,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尸折,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后殷蛇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體实夹,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年粒梦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亮航。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匀们,死狀恐怖缴淋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泄朴,我是刑警寧澤重抖,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站祖灰,受9級(jí)特大地震影響钟沛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜局扶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一恨统、第九天 我趴在偏房一處隱蔽的房頂上張望叁扫。 院中可真熱鬧,春花似錦畜埋、人聲如沸莫绣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)兔综。三九已至,卻和暖如春狞玛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涧窒。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工心肪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纠吴。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓硬鞍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親戴已。 傳聞我的和親對(duì)象是個(gè)殘疾皇子固该,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348