聊一聊在 Airtest 自動化中如何清除 iOS 後臺應用
此文章來源於專案官方公眾號:“AirtestProject”
版權宣告:允許轉載,但轉載必須保留原連結;請勿用作商業或者非法用途
前言
不知道做iOS測試的同學有沒有遇到過1個非常讓人苦惱的問題:每次開啟iOS應用的介面都是上次退出時的介面,應用初始頁面不一致,導致指令碼執行出現了各種問題。
但iOS平臺並不支援 clear_app()
介面,所以無法像Android那樣直接呼叫 clear_app()
,就能把應用程式殺掉。而 stop_app()
也只能把應用放到後臺,下次再喚起應用時,初始頁面依舊是上次退出時的頁面。
所以究竟有沒有什麼辦法可以清除iOS的後臺應用,從而保證應用的初始頁面一致呢?下文我們一起來探討下。
清除iOS後臺應用實踐
既然沒有介面可以給我們用來清除iOS的後臺應用,那我們可以換一種解決思路,用Airtest模擬清理後臺應用的行為:雙擊HOME鍵/從底部向上滑動,喚出多工切換的介面,再通過向上滑動的動作,逐一清理後臺應用。
但實踐後發現,執行兩次 keyevent("HOME")
並不能實現雙擊HOME鍵的效果;從底部向上滑動也不能如預期那樣喚出多工切換的介面。
那還有沒有別的方式可以喚出多工的介面呢?其實是有的,在我們最常見的蘋果圓點樣式的輔助功能按鈕中,包含了1個名為 應用切換器
或者 多工
的快捷功能。
1. 在輔助觸控中設定應用切換器
我們在示例裝置中依次找到 設定--通用--輔助功能--輔助觸控
,開啟 自定頂層選單
,點選 自定
的圖示,將其改成 多工
,此時單擊蘋果的圓點按鈕,就可以看到裡面已經出現了一個 多工
的快捷鍵圖示:
設定好之後,我們可以通過Airtest的點選指令碼,輕鬆喚出多工切換的介面:
2. 提高清除iOS後臺應用指令碼的相容性
雖然上述指令碼可以完成清除後臺應用的工作,但實際在指令碼編寫和執行的過程中,很容易發現一些影響相容性的問題:
① 蘋果的圓點按鈕在閒置時會變成透明的,所以截圖時會把手機背景也連帶著截進去,換裝置執行的時候容易找不到圖或者匹配出錯誤結果:
這個問題我們可以在設定中把這個圓點按鈕的閒置透明度改成100%,即閒置時,圓點按鈕也不會變成透明的效果:
把其餘待測iOS裝置的圓點按鈕透明度都設定為100%,即閒置時圓點按鈕也是全黑不透明的,此時的截圖指令碼就可以在更多機器上成功執行了:
② 不同型號的iOS任務切換器圖示不全相同
比如iPhone 6的任務切換器圖示:
iPhone 7 plus的多工圖示:
不同型號的蘋果裝置,存在不一樣的應用切換器圖示,那我們總不能換一臺裝置就改一次點選切換器圖示的指令碼把?當然不是。更好的解決辦法是,我們把這幾種圖示儲存在1個列表裡面,只要列表中的任意1個圖示出現了,我們就進行點選操作:
這樣即使更換了iOS裝置,應用切換器的圖示不一致了,我們還是可以使用同一個指令碼:
小結
關於清除iOS後臺應用的教程就講解到這裡,解決思路由我們的airtest使用者cy hus提供。如果同學們有更好的解決辦法,也歡迎在我們的官方答疑Q群(1017250147)中分享~
Airtest官網:airtest.netease.com/
Airtest教程官網:airtest.doc.io.netease.com/
搭建企業私有云服務:airlab.163.com/b2b
相關文章
- 聊一聊資料應用中的資料集市
- 聊一聊中臺和DDD(領域驅動設計)
- SpringBoot在貝聊的應用Spring Boot
- 簡單聊一聊Javascript中的模組化JavaScript
- 聊一聊SQL最佳化SQL
- 聊一聊 C# 後臺GC 到底是怎麼回事?C#GC
- 聊一聊我在 B 站自學 Java 的經歷吧Java
- 聊一聊 Javascript 中的 ASTJavaScriptAST
- 聊一聊HTTPS雙向認證的簡單應用HTTP
- 聊一聊前端效能優化 CRP前端優化
- 聊一聊Jmeter的引數化JMeter
- 【AppStore】聊一聊關於IOS應用上架Appstore稽核不透過的坑APPiOS
- [自動化]淺聊ansible的冪等
- 聊一聊Javascript中的Promise物件JavaScriptPromise物件
- 聊一聊 RestTemplateREST
- 聊一聊chkrookit的誤信和誤用
- Airtest結合tidevice實現IOS自動化測試AIIDEdeviOS
- 一起聊一聊hive的索引最佳化。Hive索引
- 聊一聊黑客是如何思考問題的黑客
- 聊一聊 TLS/SSLTLS
- 聊一聊Unity協程背後的實現原理Unity
- 聊一聊Vue中的回撥函式Vue函式
- 【內有驚喜】聊一聊前端效能優化!前端優化
- 聊一聊對跨平臺容器生態的理解
- airTest自動化測試AI
- 聊一聊領域驅動與貧血模型模型
- 聊一聊 Spring 中的擴充套件機制(一)Spring套件
- 【聊技術】在Android中實現自適應文字大小顯示Android
- 聊一聊非對稱加密在介面引數中的簡單實現加密
- 聊一聊前端換膚前端
- 聊一聊session和cookieSessionCookie
- 聊一聊Greenplum與PostgreSQLSQL
- 聊一聊模板方法模式模式
- 聊一聊 JVM 的 GCJVMGC
- 聊一聊測試流程
- 聊一聊原生瀏覽器中的模組瀏覽器
- 今天我們來聊一聊Java中的SemaphoreJava
- 聊一聊 tcp/ip 在.NET故障分析的重要性TCP