Appium app自動化測試環(huán)境搭建完整版(內(nèi)網(wǎng))


windows7 + Appium + 夜游安卓模擬器 + Python

像Selenium可以操控Web瀏覽器夫晌,手機(jī)APP平臺也有類似的自動化測試工具:Appium;

全文分基礎(chǔ)介紹所袁、環(huán)境搭建和案例演示三部分介紹Appium凶掰,以幫助Learner快速的上手。

基礎(chǔ)介紹

詳細(xì)原理介紹請點(diǎn)擊

Appium是一個開源的自動化測試框架懦窘,用于原生,混合和移動Web應(yīng)用程序港华。 它使用WebDriver協(xié)議驅(qū)動iOS午衰,Android和Windows應(yīng)用程序冒萄。關(guān)于它的運(yùn)作流程尊流,用圖來介紹會更加生動形象一些:

Appium運(yùn)行流程灯帮、原理

在上圖中,左邊這部分是Appium-Client迎献,通俗點(diǎn)來說,是用于間接驅(qū)動最右邊的設(shè)備執(zhí)行預(yù)定的自動化測試流程忿晕,支持使用多種主流的編程語言進(jìn)行編寫践盼,這也是測試開發(fā)人員需要關(guān)注的核心部分宾巍;中間的Appium-Server是銜接左邊客戶端以及右邊APP設(shè)備端的重要橋梁,一般僅需要配置好環(huán)境及啟動運(yùn)行肄程;右邊這塊,當(dāng)然就是實(shí)際執(zhí)行自動化測試的終端蓝厌,如IOS真機(jī)古徒、Android真機(jī)隧膘,或者是模擬器。

工具:

? ? 1.使用Java開發(fā)時(shí)才需要下載? JDK

? ? 2. node.js

? ? 3. Android SDK

? ? 4.Appium-Server:下載appium-desktop即可

? ? 5.Appium-Python-Client? (編寫測試腳本用)

? ? 6.終端:下載夜神安卓模擬器

? ? 7.實(shí)例:(1)模擬機(jī)安卓應(yīng)用自動化測試(2)真機(jī)自動化化測試

1.安裝JDK

(1) 官網(wǎng)下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html


(2) 選擇Java SE 8u201/ 8u201疹吃,點(diǎn)擊JDK下載

(3) 安裝下載的JDK

(4)配置系統(tǒng)環(huán)境變量

在“系統(tǒng)變量”一欄中萨驶,進(jìn)行新建或編輯操作

(1)新建JAVA_HOME變量

變量名:JAVA_HOME

變量值:填寫JDK安裝目錄(我的是 D:\Program Files (x86)\Java\jdk1.8.0_181

(2)找到Path變量進(jìn)行編輯,沒有的話就新建一個

變量名:Path

變量值: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(原有變量值不要刪除叁温,直接在末尾添加)

//注意前面有個英文的分號券盅,不要漏掉膛檀,這是為了跟前面的變量值間隔開的

(3)新建CLASSPATH變量

變量名:CLASSPATH

變量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

//可以直接復(fù)制這句話到變量值那一欄,注意前面有個“.”不要漏掉

點(diǎn)擊確定泳炉,保存設(shè)置嚎杨,回到桌面“win+R”,輸入“cmd”

輸入命令:java -version

詳細(xì)內(nèi)容見? http://www.reibang.com/p/c9cb3185b221

2.安裝node.js

1. 由于Appium的server端是node.js編寫的所以需要先安裝node.js刨肃。安裝node.js后箩帚,也可以直接按照官方教程通過npm安裝Appium,不推薦這種方式盔然。(注:npm類似于Python的pip愈案,一個非官方包管理器)

2. 官方下載地址:點(diǎn)擊下載 鹅搪,根據(jù)自己的操作系統(tǒng)下載不同版本的node.js

3. node.js的安裝一路傻瓜式next就可以了,注意一點(diǎn)涩嚣,將路徑改下,安裝成功后會自動添加環(huán)境變量顷歌。也就是在cmd下任意目錄都可以使用npm命令幔睬。

4. 檢查是否安裝成功

cmd下輸入:npm

3.安裝Android SDK(安卓軟件開發(fā)包)

1. 安裝Android SDK(安卓軟件開發(fā)包),測試Android手機(jī)必然是要安裝Android SDK赦抖。(只看1.4.5即可)

下載地址:https://www.androiddevtools.cn/ 在sdk下下載(直接下載對應(yīng)版本队萤,解壓至任意目錄即可,注意路徑不能包含中文要尔,否則安裝 SDK Manager.exe 時(shí)不能出來工具包)

安裝后,解壓后包含以下文件:

1)自帶add-ons既绩、platforms还惠、tools、AVA Mnager.exe蚕键、SDK Manager.exe嚎幸、SDK Readme.txt

2)新增文件夾build-tools、extras骑疆、platform-tools

3)點(diǎn)擊SDK Manager.exe進(jìn)入SDK工具下載,自帶tools(自帶AndroidSDK Tools)和extras文件夾

4)手動下載:下載Android SDK Platform-tools解壓后為platform-tools放到 platform-tools 文件下? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下載 Android SDK Build-tools解壓后為21.0.0放到build-tools 下(多下載幾個版本)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Extras文件夾下的 Google USB Driver

2. 在系統(tǒng)變量中箍铭,新建變量名:ANDROID_HOME诈火,變量值寫解壓后的文件夾路徑冷守。(不建議這么做)

變量:ANDROID_HOME

值:D:\android-sdk-windows

3. 雙擊android-sdk-windows文件夾下的 SDK Manager.exe,選裝工具拍摇。必裝:Tools 文件夾下Android SDK Platform-tools 和 Android SDK Build-tools充活,Android SDK Tools,Extras文件夾下的 Google USB Driver

選擇了以上四個安裝包之后混卵,點(diǎn)擊“Install 4 Packages...”,在License頁面蚁滋,選擇Accept License赘淮,最后點(diǎn)擊 “Install” 開始安裝拥知。

4. 在系統(tǒng)變量 Path 中添加ANDROID_HOME低剔、tools肮塞、platform-tools、build-tools目錄猜欺。保存修改拷窜。

變量Path,值:%ANDROID_HOME%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools\28.0.0

建議如下寫法:D:\android-sdk-windows;D:\android-sdk-windows\tools;D:\android-sdk-windows\platform-tools;D:\android-sdk-windows\build-tools\28.0.0

5. 檢查環(huán)境變量是否配置成功

cmd下分別輸入:

adb

andoid

android -h

或者

monkeyrunner? ? ? ? ? ? ? ? ? ? ? ? ? ? 驗(yàn)證tools環(huán)境配置是否成功

adb? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 驗(yàn)證配置platform-tools環(huán)境變量是否成功

aapt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 驗(yàn)證build-tools的路徑環(huán)境變量是否配置成功

4.安裝Appium-Server

使用appium-desktop來搭建Appium-Server環(huán)境赋荆;appium-desktop是連接appium服務(wù)的桌面應(yīng)用窄潭,可以方便測試人員進(jìn)行連接手機(jī),錄制腳本等工作嫉你。

點(diǎn)擊進(jìn)入下載Appium-desktop進(jìn)行下載,選擇對應(yīng)的版本進(jìn)行下載幽污,下載完成后直接進(jìn)行安裝就可以了其掂。

5.Appium-Python-Client

選擇python作為自動化測試腳本語言:

注:appium-desktop 和 模擬機(jī) 連接時(shí),可以通過錄制深寥,進(jìn)行操作模擬機(jī),然后则酝,把錄制腳本轉(zhuǎn)化為正式python腳本闰集,可以復(fù)制到pycharm編輯器中,通過appium-python-client這個驅(qū)動來自動化模擬機(jī)爽雄。腳本在pycharm中運(yùn)行挚瘟,通過appium-server來操作模擬機(jī)饲梭。

方法一:直接用命令? pip install Appium-Python-Client?

方法二(內(nèi)網(wǎng)下):

1.? 離線下載Appium-Python-Client

2. cd python-client-master

3.? python setup.py install

由于 運(yùn)行 python setup.py install 時(shí)乘盖,提示有錯誤,找不到urllib3等等憔涉,(原因?yàn)楣緝?nèi)網(wǎng)订框,不能下載依賴)!6颠丁4┌狻!9酢纵揍!

故,

1.? 離線? 下載urllib3

2. cd urllib3-master

3.? python setup.py install

4.? 檢測是否成功? ?

import urllib3

此時(shí)议街,再次運(yùn)行 pip install Appium-Python-Client? 仍有報(bào)錯提示

故匾灶,離線 下載 selenium

(1)下載selenium安裝包

(2)下載后解壓

(3)進(jìn)入命令行算利,切換到安裝包路徑泊窘,輸入python setup.py install指令執(zhí)行setup.py文件安裝selenium

看到下圖中的Finished processing dependencies for selenium==3.6.0即安裝成功

當(dāng)然丁鹉,你也可以用pip show selenium指令查看selenium安裝情況

再次在python-master文件中運(yùn)行 pip install Appium-Python-Client 無報(bào)錯信息即可

命令運(yùn)行后雳灾,可以發(fā)現(xiàn)python27下的site-packages下已加載了

appium_python_client-0.46-py2.7.egg

selenium-3.141.0-py2.7.egg<from Appium-pYthon-Client>

urllib3-1.25.3-py2.7.egg<from selenium<4,>=3.14.1—>Appium-pYthon-Client>

6.安裝夜神安卓模擬器

點(diǎn)擊下載夜神模擬器,選擇磁盤進(jìn)行安裝匈庭,安裝完成后找到 nox_adb的所在位置阱持,復(fù)制文件路徑,將其添加到環(huán)境變量中,變量名為nox_adb滓窍,變量值為其文件路徑。

7.實(shí)例

(1)安卓應(yīng)用自動化測試

(1)使用adb連接

首先,對SDK中platform-tools里adb版本跺嗽,模擬器nox中bin里adb和 nox_adb的版本進(jìn)行匹配;

platform-tools中adb版本
模擬器中版本

如果出現(xiàn)三個版本不一致,將SDK中的adb.exe復(fù)制二份畜挨,一份命名為nox_adb.exe毡咏;另一份為adb.exe血当;然后粘貼到nox中bin里,更替掉原本的哪兩個版本即可离熏。

現(xiàn)在開始,找到Android SDK的文件夾奸鸯,點(diǎn)開platform-tools娄涩,

shift + 右鍵 進(jìn)入CMD,輸入adb devices,會顯示目前處于5037端口球恤,并且進(jìn)程成功啟動的說明。(運(yùn)行前需要后臺結(jié)束adb.exe進(jìn)程

啟動SDK進(jìn)程

打開夜神模擬器(一定要打開)之后找到夜神的安裝路徑,點(diǎn)開bin文件夾诵叁,shift + 右鍵? 進(jìn)入CMD碑诉,輸入nox_adb.exe connect 127.0.0.1:62001

之后在輸入? adb devices

打開夜神模擬器(一定要打開)之后找到夜神的安裝路徑恭垦,點(diǎn)開bin文件夾唠帝,shift + 右鍵? 進(jìn)入CMD,輸入nox_adb.exe devices

之后在輸入 adb devices

之后一直打開模擬器瀑晒,打開platform-tools,并進(jìn)入cmd玖详,輸入adb devices劳澄,如下圖所示就表示SDK與模擬器成功連接了

sdk端檢查

(2)打開appium-desktop連接模擬器

修改? Host: 127.0.0.1

Post 保持默認(rèn)

點(diǎn)擊開始服務(wù)

繼續(xù)點(diǎn)擊如圖所示

在desired capabilities中輸入對應(yīng)參數(shù):

切記:

1)左邊框內(nèi)輸入

2)app? filepath? ? ? F:\Appium\app-debug.apk

3)? autoAcceptAlerts? ? ? boolean? ? ? ? ? true

4)? 我加載automationName時(shí),會報(bào)錯“could not find a driver for automationName'appium' and platformName 'Android'.”

之后保存,并點(diǎn)擊start session即可(保持模擬器打開狀態(tài))

注:點(diǎn)擊 獲得appPackage和appActivity

方法二:把a(bǔ)pk放到android-sdk下build-tools妹懒,使用命令? aapt dump badging F:\Appium\app-debug.apk

之后點(diǎn)擊start session即可(保持模擬器打開狀態(tài))

連接成功后,appium上自動調(diào)整到App頁面瓦宜,如下

(2)真機(jī)自動化測試

下面演示在安卓真機(jī)上的自動登錄Keep(APP)。

獲取設(shè)備名稱假夺。操作流程:開啟手機(jī)的開發(fā)和調(diào)試模式蜻韭,連接電腦授權(quán)認(rèn)證,Window + R輸入并運(yùn)行cmd,用adb devices -l查看:

獲取設(shè)備號

啟動Appium Server進(jìn)行調(diào)試:

Inspector Session
Desired Capabilities

從上圖可以看到娩怎,啟動App Session需要有以下幾個參數(shù)(點(diǎn)擊了解更詳細(xì)的Appium Desired Capabilities):

platformName柬讨,如Android、iOS等

deviceName畴嘶,參考前面是如何獲取的

注:點(diǎn)擊這里獲得appPackage和appActivity

綜上所述窗悯,這里對應(yīng)Keep的信息如下:

{"platformName":"Android","deviceName":"WAS_AL00","appPackage":"com.gotokeep.keep","appActivity":"com.gotokeep.keep.splash.SplashActivity"}

點(diǎn)擊Start Session莲绰,之后可以看到手機(jī)端啟動了Keep,并且在Appium Server端中同步展示:

Start Session
Keep

上述的操作通常只是用來方便獲取控件id及定位的戳晌,下面基于Python編寫完整的Appium-Client以實(shí)現(xiàn)自動登錄操作:

from appium import webdriver?

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

server = 'http://localhost:4723/wd/hub'? ? ? # Appium Server, 端口默認(rèn)為4723desired_capabilities = {

? ? 'platformName': 'Android',

? ? 'deviceName': 'WAS_AL00',? ? ? ? ? # 需替換成你的deviceName

? ? 'appPackage': 'com.gotokeep.keep',

? ? 'appActivity': 'com.gotokeep.keep.splash.SplashActivity'

}

driver = webdriver.Remote(server, desired_capabilities)

wait = WebDriverWait(driver, 10)? ? ? ? ? ? # 最大查找等待超時(shí)時(shí)間:10s

def get_permission():

? ? """允許APP獲取的某些權(quán)限"""

? ? try:

? ? ? ? ask = wait.until(EC.presence_of_element_located((By.ID, 'com.android.packageinstaller:id/do_not_ask_checkbox')))

? ? ? ? ask.click()

? ? ? ? allow = wait.until(? ? ? ? ? ? EC.presence_of_element_located((By.ID, 'com.android.packageinstaller:id/permission_allow_button')))

? ? ? ? allow.click()

? ? except:

? ? ? ? pass

# 允許兩項(xiàng)授權(quán)

get_permission()

get_permission()

# 點(diǎn)擊“立即使用”

welcome = wait.until(EC.presence_of_element_located((By.ID, 'com.gotokeep.keep:id/btn_bottom_in_video_welcome')))

welcome.click()

# 切換“密碼登錄”(同樣可以使用第三方進(jìn)行授權(quán)登錄)

driver.tap([(900, 110)])

# 輸入“手機(jī)號”

phone = driver.find_element_by_accessibility_id('Phone Number In Login')phone.send_keys('13988888888')? # 替換成實(shí)際的賬號

# 輸入“密碼”

password = driver.find_element_by_accessibility_id('Password In Login')password.send_keys('123456')? ? # 替換成實(shí)際的密碼

# 點(diǎn)擊“登錄”

login = driver.find_element_by_id('com.gotokeep.keep:id/btn_action')

login.click()

最后,附上運(yùn)行效果圖:

效果


參考資料如下:

https://www.cnblogs.com/Caiyilong/p/8559394.html

https://www.cnblogs.com/my-blogs-for-everone/p/7751596.html

https://jingyan.baidu.com/article/7f766daffb88334101e1d084.html

https://blog.csdn.net/Sily_Z/article/details/80661408

https://blog.csdn.net/qq_22770715/article/details/78540634

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谍肤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恳蹲,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儿普,死亡現(xiàn)場離奇詭異勒葱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門踏幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隔缀,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵癌刽,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任剂娄,我火速辦了婚禮把鉴,結(jié)果婚禮上怠缸,老公的妹妹穿的比我還像新娘搔体。我一直安慰自己呆奕,他們只是感情好姆泻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布蛔琅。 她就那樣靜靜地躺著寨躁,像睡著了一般放钦。 火紅的嫁衣襯著肌膚如雪褂策。 梳的紋絲不亂的頭發(fā)上颓屑,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音尾抑,去河邊找鬼再愈。 笑死媳荒,一個胖子當(dāng)著我的面吹牛鱼炒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞧哟,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼聪舒,長吁一口氣:“原來是場噩夢啊……” “哼辨液!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箱残,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滔迈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后被辑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燎悍,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年盼理,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谈山。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡宏怔,死狀恐怖奏路,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臊诊,我是刑警寧澤鸽粉,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站抓艳,受9級特大地震影響触机,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玷或,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一威兜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧庐椒,春花似錦椒舵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犁钟。三九已至,卻和暖如春泼橘,著一層夾襖步出監(jiān)牢的瞬間涝动,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工炬灭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留醋粟,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓重归,卻偏偏與公主長得像米愿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鼻吮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

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