Appium如何支持ios真機測試

ios模擬器上UI自動化測試

以appium+webdriverio為例,詳細介紹如何在模擬器上安裝和測試app。在使用ios模擬器前,需要安裝xcode,創建和啟動一個simulator。simulator創建好后,就可以使用xcrun simctl命令安裝被測應用并開始測試了。xcrun simctl常用命令,當然還可以使用xcrun simctl創建、關閉模擬器。

//顯示所有的ios simulators,booted代表處于啟動狀態
xcrun simctl list devices// 刪除模擬器
xcrun simctl delete <simualtor-udid>//啟動模擬器
xcrun simctl boot <simulator-udid>//安裝.app包到模擬器上
xcrun simctl install <simulator-udid> <app-path>

上面命令中,xcrun是xcode工具鏈中一個命令行工具調度器,他的作用是自動找到并調用對應版本的開發工具,例如調用對應版本的simctl或者xcodebuild等工具。通過xcrun保證了調用的工具版本與xcode版本一致。simctl是apple提供個一個命令行工具,用于管理和控制ios模擬器(simulator),它是xcode的一部分。

上面的初始化準備工作完成后,可以在webdriverio中下載ui自動化測試的sample代碼。在sample代碼中創建apps目錄,并將被測app的zip文件拷貝到apps目錄下。webdriverio分別準備了android和ios的被測應用包。修改配置文件,將配置文件中模擬器版本進行修改,修改完畢后,即可執行“npm run ios”開始UI自動化測試了,程序會自動執行sample代碼已經寫好的自動化測試代碼。配置文件內容如下所示:

運行命令后,appium會自動安裝WebDriverAgent,啟動被測應用,并自動執行UI自動化測試。

WebDriverAgent

WebDriverAgent作用是什么呢?WebDriverAgent簡稱為WDA,WDA是由Facebook開源,現由Appium團隊維護的一個IOS端測試服務App,這個App由Apple官方的XCTest測試框架編寫,用于控制ios的UI。例如通過bundldID啟動app,查找元素,執行點擊、滑動等操作。當這個app被安裝到真機或者模擬器后,會監聽本地的HTTP接口,接受json請求來控制手機UI。當使用appium開展ios的自動化測試時,需要安裝XCUITest Driver,Driver的作用又是什么呢?Driver負責編譯和部署WDA到目標設備上,與WDA通過http請求進行通信,轉化Appium客戶端請求為WDA支持的請求。Appium客戶端、Appium Server、Driver,WDA之間的交互如下圖所示,這也是UI自動化測試在ios模擬器或者真機上的執行過程。

ios真機上UI自動化測試

通過appium在ios真機上執行UI自動化測試同樣也需要安裝WDA,iOS系統由強制的安全機制,所有App包括WDA必須簽名才能在真機上運行。在appium官網中給出了創建Provisioning Profile的詳細過程。什么是Provisioning Profile?Provisioning Profile是Apple的一種授權機制,它將一個或者多個Apple設備的UDID,一個Apple開發者證書,一個或者多個App的bundleId綁定在一起,告訴iOS系統“這個App可以被允許安裝和運行在指定設備上。”所以,如果要在ios真機上運行UI自動化測試,首選需要申請一個Apple的付費賬戶。接著完成下面的配置。

1.在ios上開啟開發者模式,不通的ios版本有所不同,可按版本查看如何開啟正機上的開發者模式

2.開發者模式下開啟“UI自動化測試”

3.信任這個設備,用USB連接IOS真機后,一般會跳出彈框,點擊信任即可

4.Mac和IOS上登錄付費的Apple ID賬戶

5.在xcode上打開WDA項目,安裝驅動的時候,默認會安裝WDA項目

WDA項目包含在appium-webdriveragent中,而appium-webdriveragent是XCUITest驅動程序的依賴項。因此,您可以在/path/to/xcuitest/driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj找到項目文件。默認情況下,驅動程序安裝在~/.appium目錄下,因此項目文件位于~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj。如果使用的是XCUITest驅動程序4.13.0或更高版本,您可以運行appium driver run xcuitest open-wda腳本,直接在Xcode中打開WebDriverAgent.xcodeproj。在xcode中打開該項目后,默認的bundleId是com.facebook.WebDriverAgentRunner,修改這個bundleID為一個新的bundleId,勾選“Automatically manage signing",修改bundleID后即可生成Provisioning Profile文件。

接著在Product-Scheme中選擇WebDriverAgentRunner,Product-Destination中選擇目標真機,進行編譯運行,即可把WDA安裝到目標真機上。

WDA安裝好后,即可通過appium驅動完成真跡的自動化測試,當然也可以在Appium inspector中啟動應用,查看應用頁面所有元素的locator。在ios真機上能看到安裝的WDA,如下圖所示:

下面就是通過appium inspector啟動ios真機,查看被測app的頁面元素locator。

在使用ios真機進行UI自動化測試時,通常會使用ideviceinstaller工具。ideviceinstaller是一個開源工具,用于在iOS真機上安裝、卸載、管理應用。常用命令如下所示

//安裝ipa包到ios真機上
ideviceinstaller -i xx/path/xx.ipa//查看真機上安裝的app信息,通常用于查看app的bundleID
ideviceinstaller -l

以上就是通過appium在iOS真機上進行UI自動化測試的配置過程。總結而言,就是需要為WDA項目生產Provisioning profile文件,再安裝WDA到目標真機上,這樣WDA才能在目標真機上控制任意需要被測試的APP UI。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84027.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84027.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84027.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

近幾年字節飛書測開部分面試題整理

文章目錄 一、面試問題1. 創建索引2. 攔截器&#xff08;Interceptor&#xff09;和過濾器&#xff08;Filter&#xff09;的區別3. 為什么jwt令牌代替session&#xff1f;4. 有一個100行的數據&#xff0c;和一個1萬行的數據&#xff0c;寫sql 的時候要注意什么&#xff1f;5.…

JDBC基礎關鍵_001_認識

目 錄 一、概述 二、原理 三、接口的作用 四、JDBC 模擬 1.JDBC 接口 2.驅動 3.配置文件 4.調用者 一、概述 JDBC&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;Java 數據庫連接&#xff1b;是用 Java 語言操作數據庫&#xff0c;使用 Java 語言向數…

SWAN(Scade One) 語言原理介紹

SCADE 團隊于2024年推出了下一代 SCADE 工具 Scade One&#xff0c;工具的建模語言也基于Scade 6 進行了演化。在語言命名方面&#xff0c;并沒有復用"Scade"這一標志性的名稱&#xff0c;而是使用了新的名字&#xff1a;Swan。在本篇中&#xff0c;將敘述 Swan 語言…

【工具教程】多個條形碼識別用條碼內容對圖片重命名,批量PDF條形碼識別后用條碼內容批量改名,使用教程及注意事項

一、條形碼識別改名使用教程 打開軟件并選擇處理模式&#xff1a;打開軟件后&#xff0c;根據要處理的文件類型&#xff0c;選擇 “圖片識別模式” 或 “PDF 識別模式”。如果是處理包含條形碼的 PDF 文件&#xff0c;就選擇 “PDF 識別模式”&#xff1b;若是處理圖片文件&…

sql中group by使用場景

GROUP BY語句在SQL中用于將多個記錄分組為較小的記錄集合&#xff0c;以便對每個組執行聚合函數&#xff0c;如COUNT(), MAX(), MIN(), SUM(), AVG()等。GROUP BY的使用場景非常廣泛&#xff0c;以下是一些典型的應用場景&#xff1a; 統計數量 當你想要計算某個字段的唯一值數…

MongoDB慢查詢臨時開啟方法講解

1、首先連接數據庫 mongosh "mongodb://localhost:27017" 2、選擇目標數據庫 show databases;#顯示所有數據庫 use lidb;#使用某數據庫 3、查看當前分析級別 db.getProfilingStatus() 輸出 { was: 0, slowms: 100, sampleRate: 1, ok: 1 } #was0表示關閉&…

UML活動圖與泳道圖

活動圖的作用&#xff0c;與用例圖類似&#xff0c;也是幫助我們捕獲用戶的需求。 活動圖主要是用來描述用戶的業務流程&#xff0c;如果能把用戶的這個業務流程描述的很清楚的話&#xff0c;就可以幫助我們做用例分析。 1 活動圖定義 活動圖描述了在一個過程中&#xff0c;…

算法練習-回溯

今天給大家帶來的是在dfs查用的降低復雜度的方法---剪枝 所謂減枝 第一題 代碼部分&#xff1a;&#xff08;未剪枝&#xff09; 代碼部分&#xff08;剪枝&#xff09; 第二題 代碼部分&#xff08;未剪枝&#xff09; 剪枝后 通過這些題目可以看出如果沒有進行剪枝操作&#…

Elasticsearch + Milvus 構建高效知識庫問答系統《一》

&#x1f50d; Elasticsearch Milvus 構建高效知識庫問答系統&#xff08;RAG 技術實戰&#xff09; &#x1f4cc; 目錄 背景介紹Elasticsearch 在知識庫檢索中的作用Milvus 在知識庫檢索中的作用混合檢索&#xff1a;Elasticsearch Milvus完整代碼實現部署建議與優化方向…

10萬QPS高并發請求,如何防止重復下單

1. 前端攔截 首先因為是10萬QPS的高并發請求&#xff0c;我們要保護好系統&#xff0c;那就是盡可能減少用戶無效請求。 1.1 按鈕置灰 很多用戶搶票、搶購、搶紅包等時候&#xff0c;為了提高搶中的概率&#xff0c;都是瘋狂點擊按鈕。會觸發多次請求&#xff0c;導致重復下…

基于單片機的病房呼叫系統(源碼+仿真)

該系統由以 STM32F4 為平臺的監控終端以及以 CC2530 為平臺的無線傳感網組成。系統上電后自動完成 ZigBee 網絡的組建、終端節點的加入&#xff0c;病人可利用便攜式的病人終端發出呼叫求助請求信息、節點在線信息以及對護士的服務評價信息等&#xff0c;這些信息通過路由節點發…

使用WebSocket實時獲取印度股票數據源(無調用次數限制)實戰

使用WebSocket實時獲取印度股票數據源&#xff08;無調用次數限制&#xff09;實戰 一、前置準備 1. 獲取API密鑰 登錄 StockTV開發者平臺 → 聯系客服獲取測試Key&#xff08;格式MY4b781f618e3f43c4b055f25fa61941ad&#xff09;&#xff0c;該密鑰無調用次數限制且支持實時…

kafka消息積壓排查

kafka監控搭建&#xff1a;https://insights.blog.csdn.net/article/details/139129552?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7EPaidSort-1-139129552-blog-132216491.235%5Ev43%5Econtrol…

Matlab回歸預測大合集又更新啦!新增2種高斯過程回歸預測模型,已更新41個模型!性價比拉滿!

Matlab回歸預測大合集又更新啦&#xff01;新增2種高斯過程回歸預測模型&#xff0c;已更新41個模型&#xff01;性價比拉滿&#xff01; 目錄 Matlab回歸預測大合集又更新啦&#xff01;新增2種高斯過程回歸預測模型&#xff0c;已更新41個模型&#xff01;性價比拉滿&#xf…

6套bootstrap后臺管理界面源碼

后端管理系統是指一種用于管理和監控網站、應用程序或系統的后臺管理界面。它通常由一組后端代碼和數據庫組成&#xff0c;用于處理和存儲數據&#xff0c;提供給前端用戶界面展示和操作數據。 后端管理系統的功能和特點可以包括&#xff1a; 用戶權限管理&#xff1a;可以設…

JavaScript性能優化實戰:從核心原理到工程實踐的全流程解析

下面我給出一個較為系統和深入的解析&#xff0c;幫助你理解和實踐“JavaScript 性能優化實戰&#xff1a;從核心原理到工程實踐的全流程解析”。下面的內容不僅解釋了底層原理&#xff0c;也結合實際工程中的最佳模式和工具&#xff0c;幫助你在項目中貫徹性能優化理念&#x…

ELK日志管理框架介紹

在小鈴鐺的畢業設計中涉及到了ELK日志管理框架&#xff0c;在調研期間發現在中文中沒有很好的對ELK框架進行介紹的文章&#xff0c;因此擬在本文中進行較為詳細的實現的介紹。 理論知識 ELK 框架介紹 ELK 是一個流行的開源日志管理解決方案堆棧&#xff0c;由三個核心組件組…

2025.6.4總結

工作&#xff1a;今天效率比較高&#xff0c;早上回歸4個問題&#xff0c;下午找了3個bug&#xff0c;晚上二刷了科目一&#xff08;貪吃蛇系統&#xff09;&#xff0c;寫了四個點&#xff0c;唯一沒達標的就是兩自動化沒完成。美中不足的是電腦上下載不了PC版的番茄工作軟件。…

【vue3學習】vue3入門

目錄 1、vue2選項式API 2、Vue3 組合式 API &#xff08;1&#xff09;setup 函數? 基本實現?編輯 補充方法 setup語法糖 &#xff08;2&#xff09;響應式數據? ref reactive&#xff1a; 大家好啊&#xff0c;我是jstart千語。好久沒更新咯&#xff0c;因為最近一…

【Linux基礎知識系列】第八篇-基本網絡配置

網絡配置是Linux系統維護中重要的一部分&#xff0c;正確配置網絡能夠確保系統與其他設備的有效連接。在本篇文章中&#xff0c;我們將探討Linux系統中的基本網絡配置&#xff0c;包括網絡接口的管理、IP地址的設置&#xff0c;以及使用ping和traceroute命令進行網絡診斷。通過…