天天看點

Python UI自動化

python3--uiautomator2--pytest--alure使用

官方源碼github位址:https://github.com/openatx/uiautomator2

uiautomator2 是一個可以使用python對android裝置進行ui自動化的庫。其底層基于google uiautomator,google提供的uiautomator庫可以擷取螢幕上任意一個app的任意一個控件屬性,并對其進行任意操作,但有兩個缺點:

1、測試腳本隻能使用java語言。

2、測試腳本必須每次被上傳到裝置上運作。 我們希望測試能夠用一個更腳本化的語言,

例如python編寫,同時可以每次所見即所得地修改測試、運作測試。

而uiautomator2項目是對xiaocong/uiautomator的增強,主要有以下部分:

裝置和開發機可以脫離資料線,通過wifi互聯(基于atx-agent)

內建了openstf/minicap加快截圖速度

內建了openstf/minitouch達到精确實時控制裝置

修複了xiaocong/uiautomator經常性退出的問題

代碼進行了重構和精簡,友善維護

工作原理

Python UI自動化

如圖所示,python-uiautomator2主要分為兩個部分,python用戶端,移動裝置

python端:運作腳本,并向移動裝置發送http請求

移動裝置 :移動裝置上運作了封裝了uiautomator2的http服務,解析收到的請求,并轉化成uiautomator2的代碼。

整個過程

在移動裝置上安裝atx-agent(守護程序), 随後atx-agent啟動uiautomator2服務(預設7912端口)進行監聽

在pc上編寫測試腳本并執行(相當于發送http請求到移動裝置的server端)

移動裝置通過wifi或usb接收到pc上發來的http請求,執行制定的操作

1.安裝python

如指令行可以執行python,則跳過此步驟

在python官網下載下傳python,并配置環境變量,可點選檢視詳細教程

2.安裝adb

如指令行可以執行adb devices,則跳過此步驟

從谷歌官網下載下傳android platform tools , 解壓,并加包含adb.exe的目錄加入到系統的path中。

3.安裝uiautomator2

同時需要pillow來處理截圖資料

4.初始化

部署相關的守護程序。

電腦連接配接上一個手機或多個手機, 確定adb已經添加到環境變量中,執行下面的指令會自動安裝本庫所需要的裝置端程式:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch

安裝完成,裝置上會多一個uiautomator的應用。

例如:

Python UI自動化

5.确定環境是否搭建成功

接下來看一段python腳本,運作成功時手機會彈出一句:hello world, 顯示時間為3秒

Python UI自動化

我們可以借助android sdk自的uiautomatorviewer檢視元素,這就要求手機必須以usb的方式連接配接pc,我前面使用的是wifi連接配接進行連接配接的。是以,openatx提供了另外一個工具weditor 來解決這個問題。

github位址:https://github.com/openatx/weditor

1、安裝:

2、使用:

預設會通過浏覽器打開頁面:http://localhost:17310/

Python UI自動化

在頁面左上角選擇android,點選connect按鈕。

當我們操作完手機後,可以點選“dump hierchy”按鈕進行重新整理,進而保持與裝置上的界面保持同步。weditor 還可以幫我們生成代碼。

總之,研究一下就會用了。

github位址:https://github.com/allure-framework/allure2/releases

Python UI自動化

環境配置參考如下:

allure安裝:https://cloud.tencent.com/developer/article/1556151

官網位址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

根據自己電腦組態安裝對應的jdk

Python UI自動化

官網位址:https://git-scm.com/

一直下一步就好了

概述:

本工程是在開源 uiautomator2 和 facebook-wda 項目的基礎之上,進行了統一的封裝,消除兩個項目所提供的接口的差異性,同時也将分散的接口功能進行了聚合,降低接入門檻,簡化使用操作,同時也最大化保留了原項目的諸多優點,并可以進行更加深度的定制化拓展。

工程采用業内主流的pytest+allure作為用例運作的基本腳手架和測試報告生成架構,腳本用例采用經典po模式+業務流程封裝+資料分離的思想進行組織和編寫。

本工程編寫的初衷是為了盡可能的降低ui自動化腳本的編寫和使用門檻,着重在元素定位、異常和斷言處理上進行了更進一步的政策優化和封裝,使得測試人員可以聚焦在元素基本操作的編寫和業務流程的邏輯組織上,而無需刻意關注随機的彈窗遮擋或點選按鈕無法跳轉下一頁面的異常toast報錯處理等操作,減少流程中過多的自定義斷言處理,提高腳本穩定性和複用性(多平台複用、流程複用),降低維護成本,加快腳本編寫速度。

初始化安裝:

安裝以上的的前期準備

找一個目錄,打開git bash,輸入:<code>git clone [https://gitee.com/ran_yong/auto_uiautomator2.git](https://gitee.com/ran_yong/auto_uiautomator2.git)</code>

打開pycharm,打開上一步拉取下來的uiautotest檔案夾,導入工程,點選settings---project---project interpretor---add...---new environment---location中在目前工程名後确認是否有/venv,沒有的話手動輸入,基本編譯器選擇python3的安裝路徑,确認即可

pycharm需要先配置pip的repositories,推薦https://pypi.tuna.tsinghua.edu.cn/simple/ ,pycharm的terminal中,輸入:

<code>pip3 install -r requirements.txt</code>

<code>pip3 install ./install/whl/mtn_perf-0.1.0-py3-none-any.whl ./install/whl/mtn_speed-0.1.0-py3-none-any.whl ./install/whl/facebook_wda-1.3.2.dev31-py3-none-any.whl</code>

等待安裝完成後,環境就配置完成了,後續執行測試隻要執行下面的第9步即可

手機進入開發者模式,插入usb,確定adb devices可以傳回裝置号,直接運作對應應用目錄下的run.py即可(需要在手機端确認安裝一些必須的軟體)

工程分層結構

詳情請參考項目檔案readme.md

開始編寫用例

基本流程: element(image)--&gt;page--&gt;flow--&gt;case--&gt;data

&lt;這是一個視訊連結&gt;後續補錄上