此文章來源於專案官方公眾號:“AirtestProject”\
版權宣告:允許轉載,但轉載必須保留原連結;請勿用作商業或者非法用途 #
一、前言
很多新手同學在寫自動化測試指令碼的時候,開啟、關閉、切換 App 的方式還是使用最基礎的方式,也有同學在交流群內多次詢問是否有開啟、關閉、切換 App 以及清除 App 程序的方式、或介面,那麼今天,我們詳細來講講如何實現開啟、關閉、切換 App 以及清除 App 程序操作。
二、開啟、關閉、切換 App 以及清除 App 程序如何實現
2.1 開啟 App:start_app()
開啟 App 的方式有很多,有透過 poco 點選應用圖示的:
poco("手機管家").click()
也有透過 Airtest 圖片點選:
但是以上兩種方式,需要將 App 放置在當前介面上才能進行點選,但是我們可以直接呼叫 Airtest 的start_app()
的介面,不用擔心 App 放置的位置,可以直接開啟 App,只需要輸入 App 的包名即可。
start_app("com.ss.android.article.news")
有些同學還不清楚我們如何獲取我們想要的應用包名,點選 AirtestIDE 上自帶的 Android 小助手可以查詢,有關更多關於 Android 小助手的用法,可以點選檢視我們的教程文件:
https://airtest.doc.io.netease.com/IDEdocs/3.2device_connection/7_android_assistant/
2.2 關閉 App:stop_app()
同理,在退出 App 的時候,同學們可能會透過瘋狂點選返回鍵退出 App
keyevent("BACK")
但是操作不夠優雅,我們可以使用stop_app()
一鍵退出回到桌面
stop_app("com.taobao.taobao")
2.3 切換 App
關於切換 App 介面的方式,大家比較關注這個點,對於 Android 跟 iOS 上是不一樣的,在 Android 裝置上,我們是可以透過 ADB 的方式去實現,可以省掉退出 A 應用,再開啟 B 應用的一個步驟流程。
shell("monkey -p com.taobao.taobao -c android.intent.category.LAUNCHER 1")
但是在 iOS 裝置上的時候,沒有更好的捷徑方式
start_app("應用A")
stop_app("應用A")
start_app("應用B")
stop_app("應用B")
2.4 清除後臺
在測試完後,裝置後臺開了很多程序,這個會影響裝置的流暢性,在 Android 裝置上,我們可以透過開啟 App 裝置窗介面後,點選 “一鍵清除後臺” 的按鈕後,即可關閉全部後臺程序了。
dev = device()
# 一般 Android 裝置可以從底部向上滑動喚出裝置窗
dev.swipe_along([(500, 2295),(500,1500),(500,1000), (500, 100)])
# 喚出裝置窗後,當出現了 “關閉所有最近開啟的應用” 控制元件,點選即可全部清除所有 app 後臺
if poco("com.huawei.android.launcher:id/clear_all_recents_image_button").exists():
poco("com.huawei.android.launcher:id/clear_all_recents_image_button").click()
在 iOS 裝置上清除應用後臺程序,則需要開啟 App 切換器,然後逐個上劃刪除
# 在部分機型或版本上,該輔助觸控小圓點無法使用 poco 識別,所以使用圖片識別比較穩妥
touch(Template(r"tpl1715678885473.png", threshold=0.6999999999999997, record_pos=(0.403, 0.008), resolution=(1170, 2532)))
# 在進入 APP 切換器後,可以判斷目前裝置上開啟了多少視窗,並透過滑動關閉
while poco("AppSwitcherContentView").exists() and times > 0:
swipe([0.5,0.8],[0.5,0.1])
times -= 1
三、在 Android 裝置上實操案例
結合上面的幾個方式,我們用個小小的實操案例來看一下在 Android 上實現的效果
參考程式碼:
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
#清理後臺
def clean_app():
dev = device()
#一般Android裝置可以從底部向上滑動喚出裝置窗
dev.swipe_along([(500, 2295),(500,1500),(500,1000), (500, 100)])
#喚出裝置窗後,當出現了“關閉所有最近開啟的應用”控制元件,點選即可全部清除所有app後臺
if poco("com.huawei.android.launcher:id/clear_all_recents_image_button").exists():
poco("com.huawei.android.launcher:id/clear_all_recents_image_button").click()
if __name__ == "__main__":
#開啟今日頭條
start_app("com.ss.android.article.news")
sleep(3.0)
#滑動今日頭條介面
for i in range(5):
swipe((500,2100),(500,500))
sleep(1.0)
#透過ADB的方式,直接切換應用介面
shell("monkey -p com.taobao.taobao -c android.intent.category.LAUNCHER 1")
sleep(2.0)
#滑動淘寶介面
swipe((500,2100),(500,500))
sleep(1.0)
#關閉淘寶應用
stop_app("com.taobao.taobao")
sleep(1.0)
#清除App後臺
clean_app()
四、在 iOS 裝置上的實操案例
我們來看一下在 iOS 裝置上實現開啟、關閉、切換 App 的效果
參考程式碼:
# -*- encoding=utf8 -*-
__author__ = "Airtest"
'''
前置條件(十分重要):
請提前按下面的操作設定好
輔助功能-觸控-輔助觸控(開啟)- 單點(App切換器)
將輔助觸控的小圓球透明度設定為100%
'''
from airtest.core.api import *
from poco.drivers.ios import iosPoco
poco = iosPoco()
import random
#清理後臺
def ios_clear_app(times=100):
#在部分機型或版本上,該輔助觸控小圓點無法使用poco識別,所以使用圖片識別比較穩妥
touch(Template(r"tpl1715678885473.png", threshold=0.6999999999999997, record_pos=(0.403, 0.008), resolution=(1170, 2532)))
#在進入APP切換器後,可以判斷目前裝置上開啟了多少視窗,並透過滑動關閉
while poco("AppSwitcherContentView").exists() and times > 0:
swipe([0.5,0.8],[0.5,0.1])
times -= 1
home()
if __name__ == "__main__":
#開啟庫樂隊
start_app("com.apple.mobilegarageband")
sleep(3.0)
#隨機點選五個座標點
for i in range(5):
random_x = random.randint(1000,2500)
random_y = random.randint(200,900)
touch((random_x,random_y))
sleep(3.0)
#關閉庫樂隊
stop_app("com.apple.mobilegarageband")
sleep(3.0)
#切換到iMovie
start_app("com.apple.iMovie")
sleep(3.0)
home()
sleep(3.0)
#開始清理後臺
ios_clear_app()
五、小結
在本週課程中,我們介紹了開啟、關閉、切換 App,以及清除 App 後臺的方式:
1、開啟 App:start_app()
2、關閉 App:stop_app()
3、切換 App:shell("monkey -p com.taobao.taobao -c android.intent.category.LAUNCHER 1")
4、清除 App 後臺
以及在 Android 跟 iOS 裝置上的不同效果。如果同學們在使用 Airtest 進行自動化測試的過程中,遇到了問題,或者有任何想要深入瞭解的知識點,歡迎在官方交流群裡告訴我們或者提交 issue,也歡迎大家投稿。
AirtestIDE 下載:airtest.netease.com/\
Airtest 教程官網:airtest.doc.io.netease.com/\
搭建企業私有云服務:airlab.163.com/b2b
官方答疑 Q 群:526033840