天天看點

Appium App UI 自動化測試理論知識

Appium App UI 自動化測試理論知識

(一)App自動化測試背景

随着移動終端的普及,手機應用越來越多,也越來越重要。App的回歸測試用例數量越來越多,全量回歸也越來越消耗時間。另外移動端碎片化嚴重(碎片化:相容性測試,手機品牌多樣、Android版本很多、CPU價格不一樣、螢幕分辨率不同),尤其是Android端碎片化嚴重性更為突出,市面上Android機型甚至有幾萬,幾十萬款,是以我們也需要通過這種自動化測試幫助我們減少相容性的測試工作。總而言之,為了減少這種重複的、大量回歸的測試任務,我們迫切需要引進一些自動化測試來協助。

(二)Appium自動化測試簡介

Appium是一個開源的,适用于

原生

(native)或

混合移動應用

(hybrid mobile apps)的自動化測試架構。Appium應用WebDriver:JSON wire protocol驅動安卓和ios移動應用。(在WebDriver基礎下封裝和擴充。JSON:一種文本格式)

  • 原生:完全用安卓架構提供的一些元件去開發。
  • 混合移動應用:比如在native中嵌入H5頁面(H5:相當于手機中的web頁面)
    • 為什麼要嵌入H5?
      • 因為最早的android開發機制是開發一個界面以後需要打成一個app,上傳到各大應用市場,使用者才能夠下載下傳應用,這種方式需要各大應用市場的稽核時間,是比較耗時的,可能會導緻應用失去時效性。H5頁面就像web頁面,隻需要背景啟動就能生效。
    • 所有的頁面都搞成H5?
      • 不可以,因為H5的性能比較差,體驗性會差一點。
Appium的特點:
  • 支援多平台(Android、iOS等)
    • ❓可以使用一套代碼既來跑android又跑ios嗎?
      • 不能。因為控件屬性是不一樣的。
      • 整體架構可以用一套,但是控件定位、元素定位、一些操作之類的不能用一套。
  • 多語言支援(Python、Java、ruby、js、C#)等。
  • Appium是跨平台的,可以在OSX,Windows以及Linux桌面系統上運作(對于安卓來說,即可以在windows上搭建Appium,又可以在mac上搭建Appium,也可以在Linux上。但是,對于ios來說,隻能用mac)
  • Appium選擇了Client/Server的設計模式。隻要Client能夠發送http請求給Server,那麼的話Client用什麼語言來實作都是可以的,這就是如何做到支援多語言的原因。
  • Appium擴充了WebDriver的協定,沒有自己重新去實作一套。這樣的好處是以前的WebDriver API能夠直接被繼承過程,以前的Selenium(WebDriver)各種語言的binding都可以拿來就用,省去了為每種語言開發一個client的工作量。
Appium工具的原理:
Appium App UI 自動化測試理論知識
Appium的哲學:
  • 開源免費。
  • 不需要重新編譯或修改應用。(直接拿到apk或者已經下載下傳到手機上的App就可以直接做自動化測試,不需要改任何代碼,也不需要管App的源程式是如何實作的)
  • 不被一種語言或者架構限制。
  • 不重複造輪子。(繼承WebDriver)
其他移動端自動化工具介紹
  1. monkeyrunner (Java語言;通過坐标實作定位;可能因為螢幕分辨率不一樣導緻定位不準确;或者說坐标點是肯定存在,但是控件可能還未加載出來)
  2. monkeytalk(隻支援JS代碼;控件定位;要在app的源碼裡面插入代理,可能會導緻源程式出現問題)
  3. robotium(隻支援Java語言;控件定位;支援混合移動應用;但是需要重簽名)

(三)Appium自動化環境搭建

  1. 安裝Python:

    python官網:https://www.python.org/

    百度網盤:

    連結:https://pan.baidu.com/s/18UXr2KsZK5UaUy1p-VfMGw

    提取碼:4w7r

    下載下傳對應機器的安裝包:

Appium App UI 自動化測試理論知識

​ 輕按兩下打開下載下傳好的Python安裝包并安裝:

Appium App UI 自動化測試理論知識

????如果未勾選Add Python 3.7 to PATH,就需要

手動配置環境變量

  • 計算機->屬性->進階系統設定
    Appium App UI 自動化測試理論知識
  • 環境變量->系統變量->Path:
    Appium App UI 自動化測試理論知識
  • 将python.exe和pip指令所在的路徑配置到Path中:

    D:\Python3

    Appium App UI 自動化測試理論知識
    D:\Python3\Scripts
    Appium App UI 自動化測試理論知識
  • 打開cmd,輸入python,驗證Python環境是否正常:
    Appium App UI 自動化測試理論知識
  1. JDK環境
    • jdk官網下載下傳位址:

      https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

      網盤位址:

      連結:https://pan.baidu.com/s/1hHQxkxDRwACKxPfuCK7tvQ

      提取碼:rasa

      下載下傳并進行安裝。

    • 配置環境變量

      系統變量 --> 建立 --> 變量名:JAVA_HOME --> 變量值:D:\Java\jdk (jdk的安裝路徑) --> 系統變量Path中加入%JAVA_HOME%\bin

    Appium App UI 自動化測試理論知識
    Appium App UI 自動化測試理論知識
    • 驗證jdk環境:打開cmd界面輸入java/javac
      Appium App UI 自動化測試理論知識
      Appium App UI 自動化測試理論知識
  2. SDK環境變量配置
    • 下載下傳SDK

      連結:https://pan.baidu.com/s/1mZJ_o2ymlSdYyZO0_Bj2Fw

      提取碼:7jm7

    • 建立系統變量 ---> 變量名: ANDROID_HOME ---> 變量值:E:\Android\sdk(根據自己電腦sdk實際的位置确定) --->

      在系統變量Path中加入入%ANDROID_HOME%\platformtools;%ANDROID_HOME%\tools

      Appium App UI 自動化測試理論知識
    • 驗證SDK環境是否正常:打開cmd,輸入adb。
      Appium App UI 自動化測試理論知識
  3. 下載下傳安裝Appium

    位址:appium.io

    連結:https://pan.baidu.com/s/1ii5h9Hr2IVSPgcJuaq82jA

    提取碼:f229

    下載下傳并安裝。

    Appium App UI 自動化測試理論知識
  4. 安裝Python第三方庫
    >>>pip install selenium
    >>>pip install --index-url https://pypi.douban.com/simple appium-python-client
               
  5. 安裝模拟器或者用真機

    驗證裝置是否連接配接?

    Appium App UI 自動化測試理論知識
    連接配接不上裝置可能原因?
    • 未進入開發者模式
    • USB調試沒有打開
    • 管理者模式打開模拟器
    • 真機offline,重插資料線
    • 真機可能需要安裝手機助手(如:華為手機助手)
    • sdk的adb指令與模拟器adb版本不一緻,替換模拟器中的adb
Appium Server日志分析
  1. 請求發送到Appium Server,Appium REST http interface listener started on 0.0.0.0:4723,監聽4723
    Appium App UI 自動化測試理論知識
  2. 設定的請求參數傳過來
    Appium App UI 自動化測試理論知識
  3. 檢查裝置連接配接
    Appium App UI 自動化測試理論知識
  4. 給手機裝兩個App
    • 一個是settings:用于設定網絡狀态
    • Appium App UI 自動化測試理論知識