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
呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~