ATX 淺談自動化測試工具 python-uiautomator2


1、簡介

  python-uiautomator2是一個自動化測試開源工具,僅支持Android平台的原生應用測試

2、支持平台及語言

  python-uiautomator2封裝了谷歌自帶的uiautomator2測試框架,提供便利的python接口。他允許測試人員直接在PC上編寫Python的測試代碼,操作手機應用,完成自動化,大大提高了自動化代碼編寫的效率。

3、python-uiautomator2主要分為兩個部分

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

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

4、環境搭建

  安裝adb並使手機或模擬器與電腦連接, adb.exe的目錄加入到系統的PATH中

  adb connect 127.0.0.1:62001 連接設備

  adb devices 查看連接設備

  adb shell

5、安裝python-uiautomator2

  pip install --pre -U uiautomator

  pip install pillow

6、設備安裝atx-agent

  python -m uiautomator2 init 最后提示success,代表atx-agent初始化成功。

7、python-uiautomator2連接手機的方式有兩種

  import uiautomator2 as u2

  d = u2.connect(‘192.168.1.169’)  // 通過WIFI

  d = u2.connect_usb(‘123456f’)    // 通過USB(手機的序列號可以通過adb devices獲取到,假設序列號是123456f)

  d.make_toast("Hello world", 3)

  sess = d.session("com.netease.cloudmusic") # 啟動網易雲音樂( com.ss.android.ugc.aweme )

  sess(text="私人FM").click()

例子(九宮格解鎖):

  import uiautomator2 as u2

  u = u2.connect() # 手機連接到PC即可

  u.swipe_points([(0.235, 0.456), (0.503, 0.449), (0.509, 0.601), (0.777, 0.603), (0.771, 0.763), (0.222, 0.75)], 0.2)

8、抓取手機上應用的控件

  雖然很想用Android SDK內置工具uiautomatorviewer.bat,但是運行uiautomator2的時候,uiautomatorviewer.bat運行不起來,兩者之間沖突太嚴重。

  於是參考着uiautomatorviewer的界面,我又寫了一個weditor,調用python-uiautomator2的兩個接口screenshot和dump_hierarchy這樣就不會有沖突問題了

9、安裝weditor與運行

  pip install --pre weditor

  python -m weditor

10、定位方式

  a)、ResourceId定位:d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()

  b)、Text定位:d(text="秒表").click()

  c)、Description定位:d(description="..").click()

  d)、ClassName定位:d(className="android.widget.TextView").click()

11、操作控件

  # click d(text="Settings").click()

  # long click d(text="Settings").long_click()

  # 等待元素的出現 d(text="Settings").wait(timeout=10.0)

12、中文字符的輸入

  d(text="Settings").set_text("你好")

如果定位不到元素需要使用send_keys方法,以及切換輸入法

  d.set_fastinput_ime(True)

  d.send_keys("你好 Hello")

  d.set_fastinput_ime(False) # 輸入法用完關掉

  截圖:d.screenshot("home.jpg")

  獲取圖層信息:xml = d.dump_hierarchy()

 

https://github.com/openatx/uiautomator2 GitHub文檔


免責聲明!

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



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