Appium app自動化測試環境搭建完整版(內網)


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

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

全文分基礎介紹、環境搭建和案例演示三部分介紹Appium,以幫助Learner快速的上手。

基礎介紹

詳細原理介紹請點擊

Appium是一個開源的自動化測試框架,用于原生,混合和移動Web應用程序。 它使用WebDriver協議驅動iOS,Android和Windows應用程序。關于它的運作流程,用圖來介紹會更加生動形象一些:

Appium運行流程、原理

在上圖中,左邊這部分是Appium-Client,通俗點來說,是用于間接驅動最右邊的設備執行預定的自動化測試流程,支持使用多種主流的編程語言進行編寫,這也是測試開發人員需要關注的核心部分;中間的Appium-Server是銜接左邊客戶端以及右邊APP設備端的重要橋梁,一般僅需要配置好環境及啟動運行;右邊這塊,當然就是實際執行自動化測試的終端,如IOS真機、Android真機,或者是模擬器。

工具:

? ? 1.使用Java開發時才需要下載? JDK

? ? 2. node.js

? ? 3. Android SDK

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

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

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

? ? 7.實例:(1)模擬機安卓應用自動化測試(2)真機自動化化測試

1.安裝JDK

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


(2) 選擇Java SE 8u201/ 8u201,點擊JDK下載

(3) 安裝下載的JDK

(4)配置系統環境變量

在“系統變量”一欄中,進行新建或編輯操作

(1)新建JAVA_HOME變量

變量名:JAVA_HOME

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

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

變量名:Path

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

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

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

(3)新建CLASSPATH變量

變量名:CLASSPATH

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

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

點擊確定,保存設置,回到桌面“win+R”,輸入“cmd”

輸入命令:java -version

詳細內容見? http://www.lxweimin.com/p/c9cb3185b221

2.安裝node.js

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

2. 官方下載地址:點擊下載 ,根據自己的操作系統下載不同版本的node.js

3. node.js的安裝一路傻瓜式next就可以了,注意一點,將路徑改下,安裝成功后會自動添加環境變量。也就是在cmd下任意目錄都可以使用npm命令。

4. 檢查是否安裝成功

cmd下輸入:npm

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

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

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

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

1)自帶add-ons、platforms、tools、AVA Mnager.exe、SDK Manager.exe、SDK Readme.txt

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

3)點擊SDK Manager.exe進入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. 在系統變量中,新建變量名: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

選擇了以上四個安裝包之后,點擊“Install 4 Packages...”,在License頁面,選擇Accept License,最后點擊 “Install” 開始安裝。

4. 在系統變量 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. 檢查環境變量是否配置成功

cmd下分別輸入:

adb

andoid

android -h

或者

monkeyrunner? ? ? ? ? ? ? ? ? ? ? ? ? ? 驗證tools環境配置是否成功

adb? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 驗證配置platform-tools環境變量是否成功

aapt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 驗證build-tools的路徑環境變量是否配置成功

4.安裝Appium-Server

使用appium-desktop來搭建Appium-Server環境;appium-desktop是連接appium服務的桌面應用,可以方便測試人員進行連接手機,錄制腳本等工作。

點擊進入下載Appium-desktop進行下載,選擇對應的版本進行下載,下載完成后直接進行安裝就可以了。

5.Appium-Python-Client

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

注:appium-desktop 和 模擬機 連接時,可以通過錄制,進行操作模擬機,然后,把錄制腳本轉化為正式python腳本,可以復制到pycharm編輯器中,通過appium-python-client這個驅動來自動化模擬機。腳本在pycharm中運行,通過appium-server來操作模擬機。

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

方法二(內網下):

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

2. cd python-client-master

3.? python setup.py install

由于 運行 python setup.py install 時,提示有錯誤,找不到urllib3等等,(原因為公司內網,不能下載依賴)!!!!!!

故,

1.? 離線? 下載urllib3

2. cd urllib3-master

3.? python setup.py install

4.? 檢測是否成功? ?

import urllib3

此時,再次運行 pip install Appium-Python-Client? 仍有報錯提示

故,離線 下載 selenium

(1)下載selenium安裝包

(2)下載后解壓

(3)進入命令行,切換到安裝包路徑,輸入python setup.py install指令執行setup.py文件安裝selenium

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

當然,你也可以用pip show selenium指令查看selenium安裝情況

再次在python-master文件中運行 pip install Appium-Python-Client 無報錯信息即可

命令運行后,可以發現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.安裝夜神安卓模擬器

點擊下載夜神模擬器,選擇磁盤進行安裝,安裝完成后找到 nox_adb的所在位置,復制文件路徑,將其添加到環境變量中,變量名為nox_adb,變量值為其文件路徑。

7.實例

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

(1)使用adb連接

首先,對SDK中platform-tools里adb版本,模擬器nox中bin里adb和 nox_adb的版本進行匹配;

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

如果出現三個版本不一致,將SDK中的adb.exe復制二份,一份命名為nox_adb.exe;另一份為adb.exe;然后粘貼到nox中bin里,更替掉原本的哪兩個版本即可。

現在開始,找到Android SDK的文件夾,點開platform-tools,

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

啟動SDK進程

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

之后在輸入? adb devices

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

之后在輸入 adb devices

之后一直打開模擬器,打開platform-tools,并進入cmd,輸入adb devices,如下圖所示就表示SDK與模擬器成功連接了

sdk端檢查

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

修改? Host: 127.0.0.1

Post 保持默認

點擊開始服務

繼續點擊如圖所示

在desired capabilities中輸入對應參數:

切記:

1)左邊框內輸入

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

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

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

之后保存,并點擊start session即可(保持模擬器打開狀態)

注:點擊 獲得appPackage和appActivity

方法二:把apk放到android-sdk下build-tools,使用命令? aapt dump badging F:\Appium\app-debug.apk

之后點擊start session即可(保持模擬器打開狀態)

連接成功后,appium上自動調整到App頁面,如下

(2)真機自動化測試

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

獲取設備名稱。操作流程:開啟手機的開發和調試模式,連接電腦授權認證,Window + R輸入并運行cmd,用adb devices -l查看:

獲取設備號

啟動Appium Server進行調試:

Inspector Session
Desired Capabilities

從上圖可以看到,啟動App Session需要有以下幾個參數(點擊了解更詳細的Appium Desired Capabilities):

platformName,如Android、iOS等

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

注:點擊這里獲得appPackage和appActivity

綜上所述,這里對應Keep的信息如下:

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

點擊Start Session,之后可以看到手機端啟動了Keep,并且在Appium Server端中同步展示:

Start Session
Keep

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

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, 端口默認為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)? ? ? ? ? ? # 最大查找等待超時時間:10s

def get_permission():

? ? """允許APP獲取的某些權限"""

? ? 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

# 允許兩項授權

get_permission()

get_permission()

# 點擊“立即使用”

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

welcome.click()

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

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

# 輸入“手機號”

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

# 輸入“密碼”

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

# 點擊“登錄”

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

login.click()

最后,附上運行效果圖:

效果


參考資料如下:

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內容