Airtest如何自動連接重啓後的設備並繼續執行自動化腳本呢?

1. 前言

最近有些小夥伴來問我們,能不能讓設備運行一些自動化腳本後,給它執行重啓操作,之後再自動連接上這臺設備,繼續執行一些自動化腳本。

答案當然是可以的,今天我們就從一個簡單的小例子來看一下這個自動化場景吧。(PS:文末可以獲得今天的練手腳本哦~)

2. 關於連接重啓設備的實操案例

1)實操案例演示

這個實操例子,大致的流程是:

  • 簡單測試一下網易雲音樂
  • 讓設備重啓
  • 自動連接重啓後的設備
  • 給設備解鎖
  • 再簡單測試一下網易雲音樂
# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.core.android.android import *

auto_setup(__file__)

dev = connect_device("android://127.0.0.1:5037/QV720MVQ52")

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

# 簡單測試網易雲音樂APP
def simple_test():
    clear_app("com.netease.cloudmusic")
    start_app("com.netease.cloudmusic")

    sleep(1.0)

    poco("com.netease.cloudmusic:id/agree").click()
    sleep(1.0)
    poco("com.netease.cloudmusic:id/permissionGrant").click()
    sleep(1.0)
    poco("com.sonymobile.cta:id/permission_allow_button").click()
    sleep(1.0)

    wait(Template(r"tpl1667356693271.png", record_pos=(0.0, -0.688), resolution=(1080, 2520)),timeout=30)

    poco("com.netease.cloudmusic:id/agreeCheckbox").click()
    poco("com.netease.cloudmusic:id/trial").click()
    sleep(1.0)

# 簡單測試後讓設備重啓
simple_test()
dev.shell("reboot")
sleep(60.0)

# 這裏執行重啓後的自動化操作
log("這裏開始執行重啓後的自動化操作")

# 重新連接設備
connect_device("android://127.0.0.1:5037/QV720MVQ52")

# 給設備解鎖
android = Android("QV720MVQ52")
android.unlock()
swipe([552, 2407],[543, 664])

# 重新初始化Android poco並進行一些自動化測試
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
sleep(3.0)
simple_test()

2)Airtest封裝的shell接口

在上述腳本中,我們在執行重啓操作的時候,用到了Airtest封裝的 shell() 接口,實際上腳本里面的 dev.shell("reboot") ,就是執行我們熟知的ADB指令 adb shell -s 手機序列號 reboot

當然,Airtest還有很多常用的封裝好的ADB接口,可以參考我們往期推文測試人員一定要懂的ADB操作,趕緊來看一看~

3)設備重啓後需要重新連接設備/初始化poco

另外,使用Airtest腳本讓設備重啓之後,Airtest並不會再主動連接上重啓後的設備,所以我們需要在設備重啓之後,再重新使用Airtest腳本去連接上這臺設備,之後再執行相關的自動化操作。

另外要注意的是,如果我們的自動化操作裏面,包含poco操作,那麼設備重啓之後,除了連接設備,還要重新初始化poco。

4)如何給重啓後的設備解鎖

設備重啓之後,我們還有可能遇到設備鎖屏的問題,爲了保障後面自動化腳本的順利執行,在進入自動化測試內容之前,我們需要給設備解鎖屏幕。

大部分情況下,使用 Android.unlock() 即可,但是也有些設備,解鎖後,需要增加一個從底部向上滑的動作,來進入到手機桌面,就像我們示例腳本所演示的那樣。

3. 拓展-關於主動斷開設備連接

上文說到如何主動連接重啓後的設備,這裏我們補充1個小知識點,就是如何主動斷開連接的設備。

舉個應用場景,假設,我們當前連接了多臺設備進行測試,一段時間後,其中1臺設備已經測試完畢,後面都用不上了,這時候我們可以用Airtest1.2.7新增的接口 dev.disconnect() 來主動斷開這臺設備的連接。

dev = connect_device("android:///")
dev.disconnect()

這個方式最大的好處,就是能幫助我們主動釋放掉一些後面測試不會再用到的資源,比如一些adb連接等。

4. 小結

今天的內容,主要講解了一個主動連接重啓後設備的小案例,另外還拓展了下,如何主動釋放設備連接。感興趣的同學可以關注我們,我們會持續分享各種自動化的小案例~


Airtest官網https://airtest.netease.com/
Airtest教程官網https://airtest.doc.io.netease.com/
搭建企業私有云服務https://airlab.163.com/b2b

官方答疑 Q 羣:117973773

呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章