Windows 10 搭建 Appium 自動化測試環境

環境搭建列表

  • Java JDK
  • Node
  • Android SDK
  • Platform-tools
  • Build-tools
  • Emulator
  • Appium
  • Appium-doctor

Ⅰ 安裝 Java JDK

下載 Java jdk ,按步驟安裝,Windows 10 默認安裝在路徑C:\Program Files\Java\jdk1.8.0_181下;安裝完成後需要在 控制面板 => 系統和安全 => 系統 => 高級系統設置 => 環境變量 => 系統變量中設置3項屬性:JAVA_HOMECLASSPATH(大小寫無所謂)、Path、若已存在則點擊"編輯",不存在則點擊"新建"。

變量設置參數如下(詳情參考:這裏):

  • 變量名:JAVA_HOME

  • 變量值:C:\Program Files\Java\jdk1.8.0_181 // 要根據自己的實際路徑配置

  • 變量名:CLASSPATH

  • 變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //記得前面有個"."
    在這裏插入圖片描述

  • 變量名:Path(該變量一般存在,點擊編輯添加即可)

  • 變量值:%JAVA_HOME%\bin %JAVA_HOME%\jre\bin
    在這裏插入圖片描述

驗證安裝是否配置成功,打開命令行工具:

java -version
# java version "1.8.0_181"
# Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
# Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
javac -version
# javac 1.8.0_181

在這裏插入圖片描述

Ⅱ 安裝 Node & NPM

下載 Node ,按步驟安裝,Windows 10 默認安裝在路徑C:\Program Files\nodejs\下,一般來說,安裝的時候已經默認添加了環境變量,無需手動添加>;如果未添加,則需要在 控制面板 => 系統和安全 => 系統 => 高級系統設置 => 環境變量 => 系統變量中設置環境變量Path

  • 變量名:Path(該變量一般存在,點擊編輯添加Node的安裝路徑即可)
  • 變量值:C:\Program Files\nodejs\

驗證安裝是否成功:

node -v
# v10.14.2
npm -v
# 6.4.1

在這裏插入圖片描述

Ⅲ 安裝 Android SDK

安裝Android SDK環境可以使用直接下載 Android studio來進行安裝,但是會下載好多無用的東西,佔用內存,但是無需配置太多設置。

這裏介紹下用命令行安裝的方法(命令行安裝可能會失敗,多試幾次就好):

  • 選擇下載下邊的Command line tools only, Windows 版 sdk-tools-windows-4333796.zip,或者直接網盤下載(鏈接: https://pan.baidu.com/s/1lQQR71t75cXucHm6sLlbVg 提取碼: dub3)
  • 在C盤下創建android-sdk文件夾(或者你自定義位置)
  • 然後解壓,將解壓後的tools文件夾,放到目錄C:\android-sdk
  • 配置環境變量ANDROID_HOME
    • 變量名:ANDROID_HOME
    • 變量值:C:\android-sdk // 要根據自己的實際路徑配置
    • 變量名:Path
    • 變量值:%ANDROID_HOME%\tools %ANDROID_HOME%\tools\bin

驗證是否安裝成功:

sdkmanager --update
# [=======================================] 100% Computing updates...

問題一

如果遇到: Warning: File C:\Users\ly__l.android\repositories.cfg could not be loaded.

則需要在路徑C:\Users\ly__l.android\ 下創建一個空的repositories.cfg文件即可

Ⅳ 安裝 Build-tools

sdkmanager --install "build-tools;29.0.0"

Ⅴ 安裝 Platform-tools

  • sdkmanager 安裝 platform-toolssdkmanager 詳細命令參考:這裏

    # 使用sdkmanager 安裝
    sdkmanager  --install  "platform-tools" "platforms;android-29"
    
  • 配置環境變量Path

    • 變量名:Path
    • 變量值:%ANDROID_HOME%\platform-tools
  • 驗證安裝成功:

    adb version
    # Android Debug Bridge version 1.0.41
    # Version 29.0.5-5949299
    # Installed as C:\android-sdk\platform-tools\adb.exe
    

最終Path的設置爲:
在這裏插入圖片描述

Ⅵ 安裝Appium

Appium(Version 1.15.1)是一個用於本地、混合和移動web應用程序的開源測試自動化框架。它使用WebDriver協議驅動iOS、Android和Windows mobile應用程序。終端安裝server版輸入:

# 安裝 server 版
npm install -g appium

默認安裝最新的版本,如果想安裝指定的版本:

npm install -g appium@1.7.2

卸載 Appium:

npm uninstall -g appium
npm cache clean --force

安裝桌面版(因爲桌面版方便元素定位,可以同時安裝兩種),下載 相應的版本進行安裝(安裝兩種方式,方便使用)。

Ⅶ 安裝 Appium-doctor

Appium-doctor是一個小型軟件,它檢查 Appium 成功運行的所有(幾乎所有)前提條件。終端輸入:

npm install -g appium-doctor

appium-doctor 檢查前提條件的輸出應該是這樣的:
在這裏插入圖片描述
至此Android環境搭建完成了!!!真機可直接運行。
如果需要使用 android 模擬器,則需要第 Ⅷ 步安裝模擬器。

Ⅷ 安裝 Emulator

  • 首先需要下載鏡像文件:

    # 查看所有可安裝的組件
    sdkmanager --list --verbose
    # 更新組件
    sdkmanager --update
    # 安裝
    sdkmanager --install "system-images;android-28;google_apis;x86"
    
  • 然後下載硬件加速器:

    sdkmanager --install "extras;intel;Hardware_Accelerated_Execution_Manager"
    
  • 下一步創建模擬器(avdmanager 詳細介紹參考:這裏):

    avdmanager create avd -n android-emulator -k "system-images;android-28;google_apis;x86" -b x86 -c 100M -d 7 -f
    
  • 最後運行模擬器:

    # android-emulator 爲上邊創建模擬器的名稱(-n android-emulator)
    emulator -avd  android-emulator
    # 或者
    emulator  @android-emulator
    

Tips:

不可以在虛擬機上運行android模擬器,因爲virtualBox的組件(Hyper-V or Credential Guard)和模擬器的組件(HAXM)有衝突

問題一
“PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT”
檢查 android-sdk 目錄下是否有至less4個目錄: emulator , platforms , platform-tools , system-images
缺少哪個安裝哪個(如果缺少platforms,則可以創建一個空的文件夾也可以),安裝方法:
sdkmanager --install “emulator”
sdkmanager --install “platforms;android-26”
sdkmanager --install “system-images;android-26;google_apis;x86”
參考:這裏

問題二
"[6100]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at …\emulator\lib64\qt\lib
Could not launch ‘C:\android-sdk…\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe’: No such file or directory "
需要使用emulator目錄下的emulator啓動虛擬設備即可(嘗試tools目錄下的emulator和emulator目錄下的哪個可以用哪個)

Ⅸ 測試代碼

  • 安裝Python環境,下載 安裝

  • 安裝時勾選Add Python3.X to Path 避免手動配置環境變量
    在這裏插入圖片描述

  • 這樣安裝後運行python腳本直接在終端使用:python test_android.py 即可
    運行test_android.py腳本(真機還是模擬器自行切換註釋代碼!!! 腳本下載):

    # coding=utf-8
    import unittest
    from appium import webdriver
    import time
    import os
    
    
    class AndroidSimpleTest(unittest.TestCase):
        def setUp(self):
            calculator_desired_caps = {
                    'platformName': 'Android',
                    'platformVersion': '9.0',
                    # emulator
                    'deviceName': 'emulator-5554',
                    'appPackage': 'com.android.calculator2',
                    'appActivity': 'com.android.calculator2.Calculator'
                    # real device
                    # 'deviceName': '520381b347dd148b',
                    #'appPackage': 'com.sec.android.app.popupcalculator',
                    #'appActivity': 'com.sec.android.app.popupcalculator.Calculator'
                }
            self.driver = webdriver.Remote('http://localhost:4723/wd/hub', calculator_desired_caps)
        
        def tearDown(self):
            self.driver.quit()
        
        def test_calculator(self):
            # 測試本機計算器
            # 代碼中的定位元素可能會改變,具體根據實際情況改動
            # real device
            #self.driver.find_element_by_accessibility_id("5").click()
            #self.driver.find_element_by_accessibility_id("Plus").click()
            #self.driver.find_element_by_accessibility_id("6").click()
            #self.driver.find_element_by_accessibility_id("Equal").click()
            #self.assertEqual(self.driver.find_element_by_id("txtCalc").text, "11")
            
            # ************
            # emulator
            self.driver.find_element_by_id("digit_5").click()
            self.driver.find_element_by_accessibility_id("plus").click()
            self.driver.find_element_by_id("digit_6").click()
            self.driver.find_element_by_accessibility_id("equals").click()
            self.assertEqual(self.driver.find_element_by_id("result").text, "11")
        
        @unittest.skip("skip")
        def test_something(self):
            pass
    
    if __name__ == '__main__':
        unittest.main()
    
    

Tips:

# 查看設備名(deviceName)
adb devices 
# 查看模擬器版本號(platformVersion)
adb shell getprop ro.build.version.release
# 查看appPackage、appActivity,運行命令時要確保打開了應用
# 例如:首先打開計算器,然後運行命令即可獲取到(以 / 隔開,前邊appPackage,後邊 appActivity )
adb shell dumpsys window windows | findstr "Current" 

其他adb相關命令查看:這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章