開啟、關閉、切換 App 以及清除 App 程序,操作 so easy!

fishfish-yu發表於2024-05-17

此文章來源於專案官方公眾號:“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

暫無回覆。

相關文章