airtest
Airtest是網易開發的手機UI界面自動化測試工具 經過截圖功能操做手機雖然方便,可是截圖涉及到分辨率的問題,代碼不能在不一樣的手機上通用。 能夠用來開發手機App爬蟲 使用先抓大再抓小的技巧,先把每一組結果的父節點抓下來,再到每一個結果裏面分別獲取子節點html
使用流程
- 打開手機(或模擬器)的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: 截圖python
點自動錄製,能夠直接點以後完成代碼的生成android
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)spring
使用child只會在子節點中搜索須要的內容,而使用offspring會像文件夾遞歸同樣把裏面的全部節點都遍歷一次,直到找到符合條件的屬性爲止。api
安裝到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:///")ui
from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco() poco('android:id/title').click()