在Airtest中如何正確使用無線模式控制手機
在 使用Airtest超快速開發App爬蟲 文章的最後,我們留了一個尾巴:如何啟動Airtest的無線模式,不用USB線就能控制手機?
本文將會講到具體的做法。做法分為兩種:第一種是在Airtest的IDE中控制手機。第二種是在Python程式碼裡面控制遠端手機。
啟動開啟手機上的adb埠
無論使用哪種方式,要遠端控制手機,就需要首先把手機上的adb埠開啟。這一步必需先用USB線把手機連上電腦。
在終端裡面執行命令:
adb tcpip 48887 複製程式碼
其中的埠號48887你可以自行設定為其他的埠號,但不能和已有的埠衝突。
命令執行完成以後,你就可以拔下USB線了。接下來就是遠端控制手機。
在AirtestIDE中無線遙控手機
開啟Airtest,點選下圖紅框框住的 remote connection:

在彈出來的輸入框中,輸入:
adb connect 手機IP:埠 複製程式碼
其中手機的IP你可以在無線路由器中找到,也可以在手機的系統設定中找到。埠就是上一條命令設定的埠。
例如:
adb connect 192.168.0.102:48887 複製程式碼
如下圖所示。

點選 connect
,此時手機就會在上方的 Device列表中出現。雙擊它就可以無線連線手機並看到手機螢幕了。
在Python中控制手機
首先說明,Airtest的官方文件有問題,如果你跟著文件來寫程式碼,一定會失敗。
官方文件中,在 airtest.readthedocs.io/zh_CN/lates… 有一段介紹如何連線遠端安卓手機的例子:
本地裝置 # connect a remote device using custom params connect_device("android://adbhost:adbport/1234566?cap_method=javacap&touch_method=adb") 複製程式碼
這個程式碼看起來,你可能會把Python程式碼寫為:
from airtest.core.api import * device_1 = connect_device('android://192.168.0.100:48887/手機串號?cap_method=javacap&touch_method=adb') 複製程式碼
如果你這樣寫, 你一定無法連上手機 。
正確的程式碼為:
from airtest.core.api import * device_1 = connect_device('android:///192.168.0.100:48887?cap_method=javacap&touch_method=adb') 複製程式碼
只有按我這裡的寫法才能正確控制手機。如下面的gif所示。

動圖中涉及到的完整程式碼為:
from airtest.core.api import * import time from poco.drivers.android.uiautomation import AndroidUiautomationPoco device_1 = connect_device('android:///192.168.0.100:48887?cap_method=javacap&touch_method=adb') poco = AndroidUiautomationPoco(device_1, use_airtest_input=True, screenshot_each_action=False) poco(text="知乎").click() poco(name="com.zhihu.android:id/input").click() poco(name="com.zhihu.android:id/input").set_text('古劍奇譚三') time.sleep(2) poco(name='com.zhihu.android:id/magi_title', textMatches='^古劍奇譚三.*$').click() poco.swipe([0.5, 0.8], [0.5, 0.2]) 複製程式碼