Android自動化之-python-uiautomator2入門簡介

  • 2019 年 11 月 23 日
  • 筆記

python-uiautomator2是一個自動化測試開源工具,僅支援Android平台的原生應用測試。python-uiautomator2封裝了Google自帶的uiautomator2測試框架,提供便利的python介面。他允許測試人員直接在PC上編寫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請求,執行制定的操作

環境安裝

1:ADB:

各種Android測試框架的基礎工具包,安裝參考:https://blog.csdn.net/L_201607/article/details/78150107

官網:http://adbshell.com/downloads

2:python-uiautomator2

Python

pip install –pre -U uiautomator2

1

pip install –pre -U uiautomator2

3:Android設備安裝atx-agent

首先設備連接到PC,並能夠adb devices發現該設備。

Python

python -m uiautomator2 init

1

python -m uiautomator2 init

這個命令做的是:從github下載atx–agent文件,並推送到手機。在手機上安裝包名為com.github.uiautomator的apk

py連接Android手機

連接手機:

python-uiautomator2連接手機的方式有兩種,一種是通過WIFI(ip),另外一種是通過USB(ip+id)。兩種方法各有優缺點。 WIFI最便利的地方要數可以不用連接數據線,USB則可以用在PC和手機網路不在一個網段用不了的情況。

1.使用WIFI連接

手機獲取到手機的IP,並確保電腦可以PING通手機。手機的IP可以在設置-WIFI設置裡面獲取到。 比如手機的IP是192.168.0.100,連接設備的程式碼為

Python

import uiautomator2 as u2 d = u2.connect('192.168.0.100')

12

import uiautomator2 as u2d = u2.connect('192.168.0.100')

2.使用USB連接

手機的序列號可以通過adb devices獲取到,假設序列號是123456f,連接程式碼為

Python

import uiautomator2 as u2 d = u2.connect_usb('123456f')

12

import uiautomator2 as u2d = u2.connect_usb('123456f')

可視化抓取控制項以及常用操作

Android自動化之-ATX錄放編輯器WEditor的安裝使用與異常解決

如何在WEditor如何定位元素呢:

定位方式

  1. ResourceId定位: d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()
  2. Text定位 d(text="秒錶").click()
  3. Description定位 d(description="..").click()
  4. ClassName定位 d(className="android.widget.TextView").click()

Python

# click 點擊 d(text="Settings").click() # long click 長點擊 d(text="Settings").long_click() # 等待元素的出現 d(text="Settings").wait(timeout=10.0)

12345678

# click 點擊d(text="Settings").click() # long click 長點擊 d(text="Settings").long_click() # 等待元素的出現d(text="Settings").wait(timeout=10.0)

對手機元素框輸入中文:

如果可以定位到元素,直接通過set_text就可以輸入中文

Python

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

1

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

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

Python

d.set_fastinput_ime(True) d.send_keys("你好 Hello") d.set_fastinput_ime(False) # 輸入法用完關掉

123

d.set_fastinput_ime(True)d.send_keys("你好 Hello")d.set_fastinput_ime(False) # 輸入法用完關掉

截圖:

Python

d.screenshot("home.jpg")

1

d.screenshot("home.jpg")

獲取圖層資訊:

Python

xml = d.dump_hierarchy()

1

xml = d.dump_hierarchy()

github:https://github.com/openatx/uiautomator2

本文主內容轉自:https://testerhome.com/topics/11357

原創文章,轉載請註明: 轉載自URl-team

本文鏈接地址: Android自動化之-python-uiautomator2入門簡介