airtest使用


airtest

Airtest是網易開發的手機UI界面自動化測試工具
通過截圖功能操作手機雖然方便,但是截圖涉及到分辨率的問題,代碼不能在不同的手機上通用。
可以用來開發手機App爬蟲
使用先抓大再抓小的技巧,先把每一組結果的父節點抓下來,再到每個結果里面分別獲取子節點

使用流程

  • 打開手機(或模擬器)的USB調試功能,並選用網易IDE提供的輸入APP后,使用adb 連接手機 參考http://airtest.netease.com/docs/cn/2_device_connection/3_emulator_connection.html
  • 利用airtest輔助窗 截屏定位,滑動等
  • 利用poco輔組窗 高級定位 (在下拉菜單中選Android開發環境,選鎖🔒后Airtest的屏幕被鎖定) 在左下UI結構圖中,點擊對應的節點,代碼中會自動添加定位信息
  • 在已連接的手機上方有一個phone assistant 可以實現手機應用的安裝/卸載/列表查看;
    常用快捷操作:打開網址、輸入文本、切換輸入法、音量調節等;手機Shell調試窗口

基本操作

touch: 點擊屏幕元素
swipe: 滑動屏幕
exists: 判斷屏幕元素是否存在
text: 在輸入框中輸入文字
snashot: 截圖

點自動錄制,可以直接點之后完成代碼的生成

poco(text="知乎").click()
poco(name="com.zhihu.android:id/input").set_text('古劍奇譚三')
poco(name='com.zhihu.android:id/magi_title', text='古劍奇譚(電視劇)').click()
poco(name='com.zhihu.android:id/magi_title')[1].click()
poco(name='com.zhihu.android:id/magi_title', textMatches='^古劍奇譚三.*$').click() #正則表達式
常見的基本上不會變化的屬性包含但不限於:name type resourceId package

poco.swipe([0.5, 0.8], [0.5, 0.2])# poco.swipe(起點坐標,終點左邊) 屏幕左上角為(0, 0),屏幕右下角為(1, 1)

使用child只會在子節點中搜索需要的內容,而使用offspring會像文件夾遞歸一樣把里面的所有節點都遍歷一次,直到找到符合條件的屬性為止。

安裝到python

  • pip install pocoui 安裝環境即可直接在python中調用poco等函數
  • pip install airtest
  • 如果adb無效,可能需要給adb賦予運行權限

控制多台手機

adb devices -l

from airtest.core.api import auto_setup
from airtest.core.android import Android
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
auto_setup(__file__)
 
device_1 = Android('76efadf3a7ce4') #最左邊的編號就是手機串號
device_2 = Android('adfasdfasf23')
device_3 = Android('adifu39ernla')
 
poco_1 = AndroidUiautomationPoco(device_1, use_airtest_input=True, screenshot_each_action=False)
poco_2 = AndroidUiautomationPoco(device_2, use_airtest_input=True, screenshot_each_action=False)
poco_3 = AndroidUiautomationPoco(device_3, use_airtest_input=True, screenshot_each_action=False)

airtest run untitled.air --device Android:///手機設備號 --log log/
python -m airtest run untitled.air --device Android:///手機設備號 --log log/

所有的選項都勾選上之后連接的設備,用&&來連接多個參數字符串

Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI&&touch_method=ADBTOUCH

a = connect_device("Android:///")

from poco.drivers.android.uiautomation import AndroidUiautomationPoco

poco = AndroidUiautomationPoco()
poco('android:id/title').click()


免責聲明!

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



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