在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的官方文檔有問題,如果你跟着文檔來寫代碼,一定會失敗。

官方文檔中,在https://airtest.readthedocs.io/zh_CN/latest/README_MORE.html#connect-android-device有一段介紹如何連接遠程安卓手機的例子:

本地設備
# 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])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章