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工具的原理:

image-20201220204656256

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
    下載對應機器的安裝包:

image-20201216111844837

​ 雙擊打開下載好的Python安裝包並安裝:

image-20201216112229015

🐵如果未勾選Add Python 3.7 to PATH,就需要手動配置環境變量

  • 計算機->屬性->高級系統設置

    image-20201216112516264
  • 環境變量->系統變量->Path:

    image-20201216112746114
  • 將python.exe和pip命令所在的路徑配置到Path中:

    D:\Python3

    image-20201216113035996

    D:\Python3\Scripts

    image-20201216113112247
  • 打開cmd,輸入python,驗證Python環境是否正常:

    image-20201216113413899

  1. JDK環境

    image-20201220085936831

    image-20201220090722721
    • 驗證jdk環境:打開cmd界面輸入java/javac

      image-20201220194820488 image-20201220194854167
  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

      image-20201220195606330
    • 驗證SDK環境是否正常:打開cmd,輸入adb。

      image-20201220195907592
  3. 下載安裝Appium

    地址:appium.io

    網盤地址:

    鏈接:https://pan.baidu.com/s/1ii5h9Hr2IVSPgcJuaq82jA
    提取碼:f229

    下載並安裝。

    image-20201220200241435
  4. 安裝Python第三方庫

    >>>pip install selenium
    >>>pip install --index-url https://pypi.douban.com/simple appium-python-client
    
  5. 安裝模擬器或者用真機

    驗證設備是否連接?

    image-20201220201053474

    連接不上設備可能原因?

    • 未進入開發者模式
    • USB調試沒有打開
    • 管理員模式打開模擬器
    • 真機offline,重插數據線
    • 真機可能需要安裝手機助手(如:華為手機助手)
    • sdk的adb命令與模擬器adb版本不一致,替換模擬器中的adb

Appium Server日志分析

  1. 請求發送到Appium Server,Appium REST http interface listener started on 0.0.0.0:4723,監聽4723

    image-20201220132537102
  2. 設置的請求參數傳過來

    image-20201220132722884
  3. 檢查設備連接

    image-20201220132817511
  4. 給手機裝兩個App

    • 一個是settings:用於設置網絡狀態

    • 另一個是unlock:用於自動解鎖(若手機是滑動鎖屏的情況,則會自動解鎖並啟動apk,若是圖案鎖屏或數字鎖屏則不可以)

      image-20201220133034364
  5. Appium Server會push一個bootstrap.jar到手機

  6. 底層調用uiautomator去實現一些操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM