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

AirtestProject發表於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

相關文章