Appium 簡介

Appium 是一個開源的移動應用自動化測試框架,用于測試原生應用(native)、混合應用(hybrid)和移動網頁應用(mobile web)。它支持 iOS、Android 和 Windows 平臺。

?https://www.bilibili.com/video/BV1R93szkEhi/?

App自動化測試:App測試Appium+UiAutomator2技巧、實戰項目

核心特點

  1. 跨平臺:同一套 API 可用于 iOS 和 Android

  2. 多語言支持:支持多種編程語言(Java, Python, Ruby, JavaScript, C#等)

  3. 開源免費:完全開源,無需授權費用

  4. 不依賴應用代碼:不需要修改或重新編譯應用

  5. 支持多種應用類型:原生、混合和移動網頁應用

工作原理

Appium 采用客戶端-服務器架構:

  • Appium 服務器:基于 Node.js 實現,負責與設備通信

  • 客戶端庫:各種語言的客戶端庫(如 Python 的?Appium-Python-Client)

  • 底層驅動

    • iOS: 使用 XCUITest(Apple 官方框架)

    • Android: 使用 UIAutomator2/Espresso(Google 官方框架)

基本使用流程

  1. 安裝 Appium 服務器(npm install -g appium)

  2. 安裝客戶端庫(如 Python:?pip install Appium-Python-Client)

  3. 編寫測試腳本

  4. 啟動 Appium 服務器

  5. 運行測試腳本

簡單 Python 示例

python

from appium import webdriverdesired_caps = {'platformName': 'Android','platformVersion': '11','deviceName': 'emulator-5554','app': '/path/to/your/app.apk','automationName': 'UiAutomator2'
}driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 執行測試操作
element = driver.find_element_by_id("com.example:id/button")
element.click()driver.quit()

主要功能

  1. 元素定位:支持 ID、XPath、類名等多種定位方式

  2. 手勢操作:點擊、滑動、拖拽、縮放等

  3. 上下文切換:在原生和 WebView 之間切換

  4. 設備控制:旋轉屏幕、返回鍵、主頁鍵等

  5. 并行測試:支持多設備同時測試

適用場景

  1. 移動應用 UI 自動化測試

  2. 回歸測試

  3. 兼容性測試

  4. 功能測試

  5. 自動化演示

Appium 是移動應用自動化測試的主流選擇之一,特別適合需要跨平臺支持的測試場景。

是app自動化測試用的嗎

是的,Appium?是專門用于?移動應用(App)自動化測試?的開源框架,支持?Android、iOS?和?Windows?平臺上的原生應用(Native App)、混合應用(Hybrid App)和移動網頁應用(Mobile Web App)的自動化測試。


Appium 的主要用途

  1. UI 自動化測試

    • 模擬用戶操作(點擊、滑動、輸入等)

    • 驗證界面元素是否正確顯示

    • 檢查交互邏輯是否符合預期

  2. 功能測試

    • 測試登錄、注冊、支付等核心業務流程

    • 驗證 API 與 UI 的交互是否正確

  3. 回歸測試

    • 每次發布新版本時,自動運行測試用例,確保舊功能不受影響

  4. 兼容性測試

    • 在不同設備、不同系統版本上運行測試,確保 App 兼容性

  5. 性能測試(結合其他工具)

    • 監測 App 啟動時間、內存占用、CPU 使用率等


Appium 的核心優勢

??跨平臺:同一套代碼可測試?Android 和 iOS(減少維護成本)
??支持多種語言:Python、Java、JavaScript、Ruby、C# 等
??無需修改 App 代碼:直接測試已安裝的 App(無需重新編譯)
??支持真機和模擬器:可在真實設備或 Android 模擬器/iOS 模擬器上運行
??豐富的定位方式:支持 ID、XPath、Accessibility ID、Class Name 等


Appium 的典型工作流程

  1. 啟動 Appium 服務器(基于 Node.js)

  2. 編寫測試腳本(如 Python +?Appium-Python-Client

  3. 連接設備(真機/模擬器)

  4. 運行測試,生成報告

Python 示例(測試 Android App)

python

from appium import webdriver# 設備配置
desired_caps = {"platformName": "Android","platformVersion": "13","deviceName": "Pixel 6","app": "/path/to/your/app.apk","automationName": "UiAutomator2"
}# 連接 Appium 服務器
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)# 測試操作
search_box = driver.find_element("id", "com.example:id/search_box")
search_box.send_keys("Hello Appium!")
search_box.click()# 關閉會話
driver.quit()

Appium vs 其他移動自動化工具

工具支持平臺語言支持是否需要源碼適用場景
AppiumAndroid, iOSPython, Java, JS, C#? 不需要跨平臺 UI 自動化
Espresso (Android)AndroidJava, Kotlin? 需要Android 原生測試
XCUITest (iOS)iOSSwift, Obj-C? 需要iOS 原生測試
SelendroidAndroidJava? 不需要舊版 Android 兼容測試
CalabashAndroid, iOSRuby? 需要跨平臺 BDD 測試

適用人群

  • 測試工程師:做 App 的 UI 自動化測試

  • 開發人員:在 CI/CD 流程中集成自動化測試

  • DevOps:搭建自動化測試平臺,提高發布質量

什么時候選擇 Appium?

? 需要同時測試?Android 和 iOS
? 不想依賴 App 源碼(測試已發布的 APK/IPA)
? 希望用?Python/Java/JS?等語言編寫測試腳本

什么時候不推薦 Appium?

? 需要極高的執行速度(原生框架如 Espresso/XCUITest 更快)
? 測試游戲(推薦 Unity Test Framework 或 Appium + OpenCV)

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

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

相關文章

【C語言刷題】第十一天:加量加餐繼續,代碼題訓練,融會貫通IO模式

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為…

免費版安全性縮水?ToDesk、TeamViewer、向日葵、網易UU遠程訪問隱私防護測評

一、前言 在這個居家辦公、遠程技術支持成為常態的時代,我們經常需要把電腦控制權交給遠方的同事或技術人員。但你想過沒有,那些免費遠程控制軟件,真的能保護好你的隱私嗎? 好用的遠程軟件通常會收費運營,投入經費去開…

nginx部署發布Vite項目

1 引言 在之前的文章《Ubuntu云服務器上部署發布Vite項目》中筆者使用了Vite提供的預覽服務(npm run preview)來在云服務器上發布Web應用。這樣做輕量應用是沒問題的,不過遇到一些專業的問題就不行了,最好還是使用專業的HTTP服務器。除此之外&#xff0…

Unity文件夾標簽 —— FolderTag

GitHub地址 FolderTag 下載之后解壓,將FolderTag文件夾拖進Unity項目的Assets文件夾 選中文件夾,填上標簽

【0基礎開發油猴腳本】某漫畫網站圖片旋轉

有朋友在用某漫畫網站在線看漫畫,但是那個網站會把漫畫圖片右旋90度,如圖。于是,他就像我發起了求助,問我能不能寫個腳本。我說,AI都發展到2025了,前端(腳本)這種東西還用自己寫嗎&a…

Vue Router 中,params參數的名稱必須與路由配置中的動態路徑參數名完全一致

路由配置與 params 參數的綁定關系 在路由配置中,使用 冒號(:) 定義動態路徑參數: // router.js(路由配置) { path: /search/:keyword, // 這里的:keyword是動態路徑參數 name: Search, component: S…

Spring Boot 應用開發實戰指南:從入門到實戰(內含實用技巧+項目案例)

📘 Spring Boot 應用開發實戰指南:從入門到實戰(內含實用技巧項目案例)🚀 你是否還在為 Spring 配置復雜、開發效率低下而苦惱?Spring Boot 早已成為 Java 后端開發的“標配”,本篇文章將帶你全…

【NLP入門系列五】中文文本分類案例

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 博主簡介:努力學習的22級本科生一枚 🌟?;探索AI算法,C,go語言的世界;在迷茫中尋找光芒…

【微信小程序】- 監聽全局globalData數據

【微信小程序】- 監聽全局globalData數據 數據劫持(Object.defineProperty)實現適用場景 數據劫持(Object.defineProperty) 實現 通過攔截 globalData 的屬性讀寫實現自動監聽,適合精確監聽特定變量。 ?實現步驟?&…

高速公路閑置土地資源化利用:廣西浦北互通3MW分布式光伏監控實踐

摘要: 分布式光伏項目在清潔能源轉型中扮演重要角色,其創新的空間利用模式有助于緩解能源開發與土地資源間的矛盾。廣西大唐至浦北高速公路(浦北互通)項目,利用高速公路沿線閑置空地建設光伏電站,發揮了分布…

【Linux網絡編程】網絡基礎

目錄 計算機網絡背景 初識協議 網絡協議 協議分層 OSI七層模型 TCP/IP五層(或四層)模型 再識協議 為什么要有TCP/IP協議? 什么是TCP/IP協議? 重談協議 網絡傳輸基本流程 局域網傳輸流程 跨網絡傳輸流程 Socket編程預備 理解源IP地址與目的…

BlenderBot對話機器人大模型Facebook開發

文章目錄 🚀 BlenderBot 的關鍵特性🧪 版本與改進📊 應用實例 Blender是攪拌機,果汁機,混合機的意思。 BlenderBot 是由 Facebook AI Research (FAIR) 開發的一種先進的對話生成模型。它旨在通過融合多種對話技能&…

60天python訓練計劃----day59

在之前的學習中,我們層層遞進的介紹了時序模型的發展,從AR到MA到ARMA,再到ARIMA。本質就是把數據處理的操作和模型結合在一起了,實際上昨天提到的季節性差分也可以合并到模型中,讓流程變得更加統一。 季節性差分用S來…

學習日志05 python

我相信事在人為,人定勝天,現在還是在基礎語法上面打轉,還是會提出一些很低級的很基礎的問題,不要著急,波浪式前進、螺旋式上升的過程吧,雖然現在的確是很絕望吧...... 今天要做一個練習:編寫猜…

LiteHub中間件之gzip算法

gzip算法理論部分LZ777算法霍夫曼編碼算法改進型的LZ777算法代碼實現壓縮對象gzip實現運行分析日志查看wireshark抓包查看后臺管理界面查看理論部分 gzip是一種無損壓縮算法,其基礎為Deflate,Deflate是LZ77與哈弗曼編碼的一個組合體。它的基本原理是&…

java+vue+SpringBoo校園失物招領網站(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔(1萬字以上)開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言:后端:Java 前端:vue框架:springboot數據庫:mysql 開發工具 JDK版本:JDK1.…

Qt Quick 與 QML(五)qml中的布局

QML布局系統主要分為三大類:錨布局、定位器布局、布局管理器。一、錨布局(Anchors)通過定義元素與其他元素或父容器的錨點關系實現精確定位,支持動態調整。核心特性屬性??作用??示例?anchors.left左邊緣對齊目標元素anchors.…

【Java|集合類】list遍歷的6種方式

本文主要是總結一下Java集合類中List接口的遍歷方式&#xff0c;以下面的list為例&#xff0c;為大家講解遍歷list的6種方式。 List<Integer> list new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);文章目錄1.直接輸出2.for循環遍…

博弈論基礎-筆記

取石子1 性質一&#xff1a;12345可以確定先手贏&#xff0c;6不論取那個質數都輸&#xff0c;789 10 11可以分別取12345變成6 性質二&#xff1a;6的倍數一定不能取出之后還是6的倍數&#xff08;不能轉換輸態&#xff09; #include <bits/stdc.h> using namespace st…

多任務學習-ESMM

簡介 ESMM&#xff08;Entire Space Multi-task Model&#xff09;是2018年阿里巴巴提出的多任務學習模型。基于共享的特征表達和在用戶整個行為序列空間上的特征提取實現對CTR、CVR的聯合訓練 解決的問題 SSB&#xff08;sample selection bias&#xff09; 如下圖1所示&am…