在Airtest中如何正確使用無線模式控制手機

使用Airtest超快速開發App爬蟲文章的最後,咱們留了一個尾巴:如何啓動Airtest的無線模式,不用USB線就能控制手機?html

本文將會講到具體的作法。作法分爲兩種:第一種是在Airtest的IDE中控制手機。第二種是在Python代碼裏面控制遠程手機。java

啓動開啓手機上的adb端口

不管使用哪一種方式,要遠程控制手機,就須要首先把手機上的adb端口打開。這一步必需先用USB線把手機連上電腦。python

在終端裏面執行命令:android

adb tcpip 48887
複製代碼

其中的端口號48887你能夠自行設定爲其餘的端口號,但不能和已有的端口衝突。api

命令執行完成之後,你就能夠拔下USB線了。接下來就是遠程控制手機。bash

在AirtestIDE中無線遙控手機

打開Airtest,點擊下圖紅框框住的 remote connection:tcp

在彈出來的輸入框中,輸入:ui

adb connect 手機IP:端口
複製代碼

其中手機的IP你能夠在無線路由器中找到,也能夠在手機的系統設置中找到。端口就是上一條命令設定的端口。spa

例如:3d

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])

複製代碼
相關文章
相關標籤/搜索