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