Appium工作原理及環境的搭建(1)

1、Appium的介紹:

一、什么是Appium Desktop?

Appium Desktop是Appium項目的桌面版GUI工具,提供了一個友好的界面,用于啟動Appium服務器、查看設備日志、與設備交互、調試自動化腳本等。相比于命令行工具,Appium Desktop讓開發者更直觀、更方便地管理自動化測試流程,尤其適合沒有命令行經驗的開發者。

二、Appium Desktop的功能

  1. 啟動Appium服務器
    Appium Desktop允許你通過簡單的點擊操作啟動Appium服務器,而不需要手動輸入命令。
  2. 設備連接管理
    你可以直接通過Appium Desktop查看連接的設備或模擬器,方便進行測試。
  3. 查看日志
    Appium Desktop能夠實時查看Appium服務器和設備的日志輸出,幫助開發者調試和分析測試結果。
  4. Inspector
    Appium的Inspector工具讓你能夠查看應用界面的元素,方便生成自動化測試腳本。它支持Android和iOS平臺的UI元素捕捉,自動生成XPath或UI Automator查詢語句。
  5. 可視化界面
    圖形化界面使得操作更加直觀,適合新手入門和快速驗證自動化測試腳本。

2、Appium的工作原理

appium 是一個自動化測試開源工具,支持iOS和 Android平臺上的原生應用,web應用和混合應用。
● 移動原生應用:單純用ios或者android開發語言編寫的、針對具體某類移動設備、可直接被安裝到設備里的應用,一般可通過應用商店獲取,比如某個游戲app;
● 移動web應用:使用移動瀏覽器訪問的應用(appium支持iOS上的Safari和Android上的 Chrome),不需要下載到設備上,而是通過瀏覽器直接訪問,比如H5九曲封神游戲;
● 混合應用:同時使用網頁語言與程序語言開發,通過應用商店區分移動操作系統分發,用戶需要安裝使用的移動應用,比如手機上的淘寶客戶端

appium是跨平臺的,支持OSX,Windows以及Linux系統。它允許測試人員在不同的平臺(iOS,Android)使用同一套API來寫自動化測試腳本,這樣大大增加了iOS和Android測試套件間代碼的復用性
● appium支持多語言,采用C/S設計模式,只要滿足client能夠發送http請求給server即可



?

appium主要分為三個點:client端,server端,及測試移動設備
● client端:用各類語言寫的測試腳本
● server端:我們安裝appium工具的那部分,專門用來監聽并接收來自client端的請求,轉發請求并控制移動設備執行測試,默認開啟并監聽4723接口
● 移動設備:支持三類設備,我們的最終目的:在設備上自動執行指定的操作


整個過程:
第一,編寫測試腳本,執行該測試腳本(相當于發送命令給server端)
第二,在某臺服務器上安裝appium工具(server端),開啟進程(默認4723接口)進行監聽;
第三,移動設備接收到server端發送過來的命令,執行指定的操作.

3、環境的搭建(MAC上)

參考:https://www.jianshu.com/p/f7cf077d9444

Mac 下 appium 自動化測試 Android 測試配置和腳本編寫(四) - 簡書

Mac下搭建appium+android+python自動化測試環境 - 簡書

appium 1.22.0版本 Appium Inspector 連接使用教程-CSDN博客

(1)第一步:安裝?nodejs?與?npm

?

安裝nodejs:地址:https://nodejs.org/en/

或者命令行安裝:$brew install node

  • 如果按照上述方法,使用brew安裝node后,一般系統會默認安裝npm,即node package manager,它是一款NodeJS包管理和分發工具,在終端中輸入npm -v就可看到當前版本:

(2)安裝Xcode(APP Store里就有),可以直接安裝。

(3)安裝ANdroid SDK,我這里是安裝了Anddroid Studio, 在SDK management里勾選了SDK tool,將SDK安裝好,你也可以只安裝SDK。

需要配置環境:

配置 SDK 環境變量,在終端輸入 open ~/.bash_profile ,在配置文件中輸入
export ANDROID_HOME=/Users/lipan/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

此時驗證一下 SDK 是否安裝成功,在終端輸入:adb version,輸入后沒有報錯則代表成功

(4)JDK安裝,需要配置環境。

  • 下載成功后,一路點擊下一步,安裝完成后,在終端輸入java -version,如果可以查詢到版本,則代表JDK安裝成功
    在這里插入圖片描述


? ? ? ? ? ? ? ? ? ? ? ??
原文鏈接:https://blog.csdn.net/weixin_36192992/article/details/124260978

?source ~/.bash_profile",讓環境變量生效。

但是我沒成功,顯示:.bash_profile:14: permission denied: /Users/yang

Mac下安裝appium+python+Android sdk 環境完整流程 - 風` - 博客園

(5)安裝appium

GUI server的話,直接下載,安裝https://github.com/appium/appium-desktop/releases/tag/v1.17.1-1

Inspector也是下載安裝,

server的無界面,需要命令行安裝:npm install -g appium

(6)appium的python客戶端

? ? ?pip install Appium-Python-Client

(7)android需要安裝drive

appium driver install uiautomator2

(8)

驗證appium的環境:

安裝成功后,在終端輸入?appium,可以正常運行,則代表,appium服務端安裝成功

yang@yangs-MacBook-Pro ~ % appium

[Appium] Welcome to Appium v2.17.1

[Appium] The autodetected Appium home path: /Users/yang/.appium

[Appium] Attempting to load driver uiautomator2...

[Appium] Attempting to load driver xcuitest...

[Appium] Attempting to load driver espresso...

[Appium] Requiring driver at /Users/yang/.appium/node_modules/appium-uiautomator2-driver/build/index.js

[Appium] Requiring driver at /Users/yang/.appium/node_modules/appium-xcuitest-driver/build/index.js

[Appium] Requiring driver at /Users/yang/.appium/node_modules/appium-espresso-driver/build/index.js

[Appium] XCUITestDriver has been successfully loaded in 0.421s

[Appium] EspressoDriver has been successfully loaded in 0.804s

[Appium] AndroidUiautomator2Driver has been successfully loaded in 1.177s

[Appium] Appium REST http interface listener started on http://0.0.0.0:4723

[Appium] You can provide the following URLs in your client code to connect to this server:

http://127.0.0.1:4723/ (only accessible from the same host)

http://192.168.115.229:4723/

[Appium] Available drivers:

[Appium] ? - uiautomator2@4.1.5 (automationName 'UiAutomator2')

[Appium] ? - xcuitest@9.1.4 (automationName 'XCUITest')

[Appium] ? - espresso@4.1.4 (automationName 'Espresso')

[Appium] Available plugins:

[Appium] ? - images@3.1.1

[Appium] No plugins activated. Use the --use-plugins flag with names of plugins to activate

第五步:安裝?appium-doctor,檢查你的appium環境是否安裝成功

  • 在終端執行:cnpm install -g appium-doctor

  • appium-doctor --android
    • mac上安裝搭建Appium環境 - 忘記木槿 - 博客園

    https://blog.kelu.org/tech/2023/01/05/mac-appium-tutorial.html

    最后還有兩個bug有待解決:

    1、JDK、SDK的環境配置后,souce 那個文件,permision denied

    2、命令行執行appium:

    No plugins activated. Use the --use-plugins flag with names of plugins to activate

    腳本的學習

    App自動化測試之Appium環境部署后續問題及解決方案_appium no driver-CSDN博客

    Mac 下 appium 自動化測試 Android 測試配置和腳本編寫(四) - 簡書

    Mac 下 appium 自動化測試 Android 測試配置和腳本編寫(四) - 簡書

    Appium無線自動化實用教程_no plugins activated. use the --use-plugins flag w-CSDN博客

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

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

    相關文章

    esp32cam遠程圖傳:AI Thinker ESP32-CAM -》 服務器公網 | 服務器 -》 電腦顯示

    用AI Thinker ESP32-CAM板子訪問公網ip的5112端口并上傳你的攝像頭拍攝的圖像視頻數據,并寫一段python程序打開彈窗接受圖像實現超遠程圖像傳輸教程免費 1. 首先你要有一個公網ip也就是去買一臺擁有公網的服務器電腦,我買的是騰訊云1年38元的服務器還可…

    【Pandas】pandas DataFrame copy

    Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于將 DataFrame 中的數據轉換為指定的數據類型DataFrame.convert_dtypes([infer_objects, …])用于將 DataFrame 中的數據類型轉換為更合適的類型DataFrame.infer_objects([copy])用于嘗試…

    緩存相關問題

    Redis 持久化機制 緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問題 熱點數據和冷數據是什么 Memcache與Redis的區別都有哪些? 單線程的redis為什么這么快 redis的數據類型,以及每種數據類型的使用場景,Redis 內部結構 redis的過期策略以及內存淘汰機制 Redis 為什么…

    2025年AI開發學習路線

    目錄 一、基礎階段(2-3個月) 1. 數學與編程基礎 2. 機器學習入門 二、核心技能(3-4個月) 1. 深度學習與框架 2. 大模型開發(重點) 三、進階方向(3-6個月) 1. 多模態與智能體…

    SvelteKit 最新中文文檔教程(19)—— 最佳實踐之身份認證

    前言 Svelte,一個語法簡潔、入門容易,面向未來的前端框架。 從 Svelte 誕生之初,就備受開發者的喜愛,根據統計,從 2019 年到 2024 年,連續 6 年一直是開發者最感興趣的前端框架 No.1: Svelte …

    【Kafka基礎】消費者命令行完全指南:從基礎到高級消費

    Kafka消費者是消息系統的關鍵組成部分,掌握/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh工具的使用對于調試、測試和監控都至關重要。本文將全面介紹該工具的各種用法,幫助您高效地從Kafka消費消息。 1 基礎消費模式 1.1 從最…

    CausalML 基于機器學習算法的因果推理方法

    CausalML 是一個 Python 包,它使用基于最新研究的機器學習算法提供一套提升建模和因果推理方法。它提供了一個標準界面,允許用戶從實驗或觀察數據中估計條件平均處理效應 (CATE),也稱為個體治療效應 (ITE&a…

    解鎖深度學習激活函數

    在深度學習的廣袤天地里,激活函數宛如隱匿于神經網絡架構中的神奇密碼,掌控著模型學習與表達的關鍵力量。今天,就讓我們一同深入探究這些激活函數的奇妙世界,揭開它們神秘的面紗。 一、激活函數為何不可或缺? 想象一…

    從零到有的游戲開發(visual studio 2022 + easyx.h)

    引言 本文章適用于C語言初學者掌握基本的游戲開發, 我將用詳細的步驟引領大家如何開發屬于自己的游戲。 作者溫馨提示:不要認為開發游戲很難,一些基本的游戲邏輯其實很簡單, 關于游戲的開發環境也不用擔心,我會詳細…

    大數據專業學習路線

    大數據專業學習路線 目錄 基礎知識核心技術進階技能實戰項目職業發展學習資源學習計劃常見問題 1. 基礎知識 1.1 編程語言 Python:大數據分析的基礎語言 基礎語法和數據類型函數和模塊面向對象編程文件操作和異常處理常用庫:NumPy, Pandas, Matplot…

    flink部署使用(flink-connector-jdbc)連接達夢數據庫并寫入讀取數據

    flink介紹 1)Apache Flink 是一個框架和分布式處理引擎,用于對無界和有界數據流進行有狀態計算。Flink 被設計在所有常見的集群環境中運行,以內存執行速度和任意規模來執行計算。 2)在實時計算或離線任務中,往往需要…

    用swift playground寫個ios應用和大模型或者網站交互

    import SwiftUIstruct ContentView: View {State private var textFieldText: String ""State private var outputText: String "輸出將會顯示在這里"private let tip:String "消息已發送,請等待"State private var history:[Stri…

    springboot+vue2集成JWT token實現權限驗證

    前端項目搭建參考: Vue項目的搭建和啟動_vue項目啟動 csdn-CSDN博客 Vue ElementUI 登錄頁面_vue用戶登錄頁面-CSDN博客 跨域問題前端解決-CSDN博客 實現思路: 1. 實現的目的:為了保護網站安全信息,使用jwt進行權限驗證&#xf…

    Cursor編程-從入門到精通__0409

    早期的Github Copilot 最近更新了,支持Agent編程,字節跳動Trae使用(免費),但成熟程度不如Cursor,Cursor前50次免費 Copilot VS Cursor*** 1,Cursor VSCode 二次開發,IDE級別 2&…

    MyBatis 詳解及代碼示例

    MyBatis 是一個 半自動 ORM 框架,主要用于 Java 與數據庫之間的持久化操作,它本質是對 JDBC 的封裝 全名:MyBatis(前身 iBATIS)核心作用:自動將 SQL 執行結果映射為 Java 對象;也可以將 Java 對…

    1.6-抓包技術(Burp Suite\Yakit抓包\Web、APP、小程序)

    1.6-抓包技術(Burp Suite\Yakit抓包\Web、APP、小程序) 如果要使用抓包軟件,基本上第一步都是要安裝證書的。原因如下: 客戶端(瀏覽器或應用)會檢測到證書不受信任,并彈出 證書錯誤&#xff0…

    Java 大視界 -- 基于 Java 的大數據隱私保護在金融客戶信息管理中的實踐與挑戰(178)

    💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

    第十屆 藍橋杯 嵌入式 省賽

    一、分析 這屆的真題,有點像第七屆的液位檢測。 這屆的題目開始,貌似比賽描述的功能,邏輯上變得更好梳理了。一開始就把大致的功能給你說明一遍,不像之前都是一塊一塊的說明。 1. 基本功能 1)測量競賽板上電位器 R…

    實現usb的MTP功能

    前言:最終結果根據用戶自主選擇可實現host和device功能的切換。 效果展示: 當插入usb時設備會彈窗 當用戶選擇設備模式時pc端就會出現mtp設備盤符 實現mtp設備 ubuntu架構根文件系統通過uMTP-Responder實現usb的MTP功能 添加服務 /home/flynn/firfly_rootfs/lib/system…

    React-05React中props屬性(傳遞數據),propTypes校驗,類式與函數式組件props的使用

    1.類式組件props基本數據讀取與解構運算符傳遞 <script type"text/babel">// 創建組件class PersonalInfo extends React.Component {render() {// 讀取props屬性 并讀取值console.log(props,this.props);return(<ul><li>姓名&#xff1a;{this.p…