Python-UiAutomator2實現Android自動化測試


本帖轉自搜狗測試公眾號

 

【一、前言】

       基於Python-UiAutomator2實現Android自動化測試,小編在Android應用的自動化性能測試中進行了實踐。本篇將簡單介紹python中使用adb、aapt命令的方法以及Python-UiAutomator2使用,后續文章將對環境搭建以及自動化性能測試進行介紹,希望能給大家一些微薄的幫助。

【二、python中使用adb、aapt命令】

在python中使用adb命令,可以導入os模塊

1、簡單的adb命令

如:os.system('adb devices)

2、稍微復雜的adb命令

如:os.system('adb shell "dumpsys activity | grep "com.sogou.map.android.***.*""')

3、將adb讀出的內容保存(os.system不支持讀取,os.popen支持讀取)

如:out = os.popen('adb shell "dumpsys activity | grep 

"com.sogou.map.android.***.*""').read()

 

 

在python中使用aapt命令

aapt即Android Asset Packaging Tool,可以在Android SDK的platform-tools目錄下找到該工具。aapt可以查看、創建、更新ZIP格式的文檔,也可將資源文件編譯成二進制文件。

1、 列出apk包的內容

aapt l[ist] [-v] [-a]file.{zip,jar,apk}

-v 以table形式列出來

-a 詳細列出內容

2、 查看apk一些信息

aapt d[ump] [--values]WHAT file.{apk} [asset [asset ...]]

badging  Print the label and icon for the app declaredin APK

permissions  Print the permissions from the APK.

Resources  Print the resource table from the APK.

Configurations  Print the configurations in the APK.

Xmltree  Print the compiled xmls in the given assets.

Xmlstrings  Print the strings of the given compiled xmlassets.

例如:執行aapt d badging **.apk,可以看到其中包含了應用包名、版本號、permission等信息。

 

 

 

 

【三、Python-UiAutomator2使用】

1、UiAutomator

UiAutomator是google為Android平台開發的自動化測試框架,基本上支持所有的Android事件操作,主要是針對UI的自動化測試,支持Android 4.1以及更高的版本。

UiAutomator提供了以下兩種工具來支持UI自動化測試:

(1). uiautomatorviewer:用來分析UI控件的圖形界面工具,位於SDK目錄下的tools文件夾中。

(2). uiautomator:一個java庫,提供執行自動化測試的各種API。

是否能夠用更腳本化的語言,例如Python,可以所見即所得地修改測試、運行測試?

非常感謝Xiaocong實現並分享(詳見參考2),為Python和UiAutomator架了一座橋。

2、Python-UiAutomator2

python-uiautomator2是一個Android UI自動化框架,支持Python編寫測試腳本對設備進行自動化。底層基於Google uiautomator2,允許測試人員直接在PC上編寫Python的測試代碼,操作手機應用,完成自動化,提高自動化代碼編寫的效率。原理是在手機上運行了一個http服務器,將uiautomator中的功能開放出來,再將這些http接口,封裝成Python庫。

支持平台及語言

 

python-uiautomator2主要分為兩個部分,python客戶端,移動設備

  • python端:運行腳本,並向移動設備發送HTTP請求

  • 移動設備:移動設備上運行了封裝了uiautomator2的HTTP服務,解析收到的請求,並轉化成uiautomator2的代碼。

 

整個過程

(1).   在移動設備上安裝atx-agent(守護進程),隨后atx-agent啟動uiautomator2服務(默認7912端口)進行監聽;

(2).   在PC上編寫測試腳本並執行(相當於發送HTTP請求到移動設備的server端);

(3).   移動設備通過WIFI或USB接收到PC上發來的HTTP請求,執行制定的操作。

python-uiautomator2代碼示例

 

上面代碼的作用是啟動“搜狗地圖”應用,然后點擊“身邊tab”,代碼簡潔、高效。

 

3、python-uiautomator2常用API介紹

3.1 獲取機器的信息

d.info

d.window_size()

d.current_app()

d.serial  #獲取設備序列號

d.wlan_ip  #獲取無線局域網ip

 

3.2 屏幕相關的操作

開關屏幕,代碼如下

d.screen_off()  #打開屏幕

d.screen_on()  #關閉屏幕

d.unlock()  #解鎖屏幕

3.3 按鍵(軟/硬)操作

d.press('back')

d.press('home')

還支持如下按鍵的操作,

home、back、left、right、up、down、center、menu、search、enter、recent(recent apps)、volume_up、volume_down、volume_mute、camera、power

3.4 手勢相關的操作,包括短按/長按/滑動/拖拽

點擊操作

d.click(x, y)

雙擊操作

d.double_click(x,y)

長按操作

d.long_click(x, y)

滑動操作

d.swipe(sx, sy, ex, ey)

d.swipe(sx, sy, ex, ey, steps=10)

拖拽操作

d.drag(sx, sy, ex, ey)

3.5 屏幕相關的操作

獲取並設置屏幕的旋轉方向

orientation = d.orientation

d.set_orientation("l") # or "left"

d.set_orientation("r") # or "right"

d.set_orientation("n") # or "natural"

凍結/解凍旋轉功能

d.freeze_rotation()  # 凍結旋轉

d.freeze_rotation(False)  # 解凍旋轉

屏幕截圖

d.screenshot("home.png")

獲取屏幕層級(hierachy)XML

xml = d.dump_hierarchy()

打開通知欄或快速設置欄

d.open_notification()

d.open_quick_settings()

【四、參考文獻】

參考

https://github.com/openatx/uiautomator2

https://github.com/xiaocong/uiautomator#uiautomator

https://blog.csdn.net/jgw2008/article/details/78286469

https://testerhome.com/topics/11357


免責聲明!

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



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