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

此文章來源於項目官方公衆號:“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

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