使用appium對安卓(使用夜神模擬器)運行自動化測試

環境安裝

基本環境安裝

安裝node.js

下載地址:Node.js — Run JavaScript Everywhere

安裝Java JDK

下載地址:JDK Builds from Oracle

安裝夜神模擬器

360上找下就能裝,安裝好后將夜神的bin目錄,添加到系統變量的path中。

安裝Android SDK

下載地址:AndroidDevTools - Android 開發工具 | Android Studio 下載 | android studio 下載 | download android studio | Android SDK 下載 | download android sdk | SDK Tools 下載 | download android sdk tools | Gradle 下載 | download gradleg

在上面的下載地址下載包:android-sdk_r24.4.1-windows.zip,解壓。

然后運行:SDK Manager.exe,最少要安裝一下platform-tools。

在系統的環境變量中添加:ANDROID_HOME

安裝完platform-tools后,到platform-tools目錄中找到adb.exe,復制這個文件到夜神的bin目錄中,替換掉夜神的adb.exe和nox_adb.exe,這樣才能連接上。

運行命令看看是否能連接上:

> adb devices
List of devices attached
127.0.0.1:62029 device

安裝Appium

先安裝服務

npm i -g appium

安裝完后運行命令:appium,會有類似輸出:[Appium] Welcome to Appium v3.0.1

再安裝驅動

appium driver install uiautomator2

安裝好驅動再運行命令:appium,會有類似輸出:[Appium] ? - uiautomator2@4.2.9 (automationName 'UiAutomator2')

幾個命令

查看設備

adb devices

List of devices attached
127.0.0.1:62029 device

連接設備

adb connect 127.0.0.1:62029 (就一個設備的情況,可以不用運行個)

查看安卓的版本

adb shell getprop ro.build.version.release

查看應用包名

adb shell dumpsys window

找到這行:mCurrentFocus=Window{55c62e4 u0 com.cadmanage.doctor/com.cadmanage.doctor.activity.LoginActivity},分別對應參數的:appPackage / appActivity

獲取UI布局

adb shell uiautomator dump /sdcard/ui_dump.xml #?導出布局的xml到模擬器的存儲

adb pull /sdcard/ui_dump.xml ./ # 從模擬器的存儲將文件另存到電腦

編寫測試(node.js)

安裝依賴包

新建一個目錄,在這個目錄下運行:

npm init

安裝webdriverio包:

npm i --save-dev webdriverio

編寫測試文件

包安裝好后,添加一個文件:test.js,內容如下:

const { remote } = require('webdriverio');const capabilities = {platformName: 'Android','appium:automationName': 'UiAutomator2','appium:deviceName': '127.0.0.1:62029', // 使用實際設備ID'appium:platformVersion': '7.1.2',      // 指定安卓版本'appium:appPackage': 'com.cadmanage.doctor','appium:appActivity': '.activity.LoginActivity','appium:noReset': true,                 // 不重置應用狀態
};const wdOpts = {hostname: process.env.APPIUM_HOST || '127.0.0.01',port: parseInt(process.env.APPIUM_PORT, 10) || 4723,logLevel: 'info',capabilities,
};async function runTest() {const driver = await remote(wdOpts);try {// 定位手機號輸入框 (通過resource-id)const phoneInput = await driver.$('//*[@resource-id="com.cadmanage.doctor:id/et_phone"]');// 點擊輸入框await phoneInput.click();// 輸入手機號await phoneInput.setValue('18000000003');// 稍作停頓以便觀察結果await driver.pause(2000);} finally {// 關閉會話await driver.deleteSession();}
}runTest().catch(console.error);

運行測試:

啟動模擬器,打開要測試的應用,運行命令:

node test.js

官方文檔:安裝 Appium - Appium Documentation

http請求示例:

appium本身是一個http服務,可以使用http協議請求,如:

POST?http://127.0.0.1:4723/session

BODY:{"capabilities":{"alwaysMatch":{"platformName":"Android","appium:automationName":"UiAutomator2","appium:deviceName":"127.0.0.1:62029","appium:platformVersion":"7.1.2","appium:appPackage":"com.cadmanage.doctor","appium:appActivity":".activity.LoginActivity","appium:noReset":true},"firstMatch":[{}]}}

webdriverio,封裝了這個請求有時候會把真實的錯誤原因隱藏,此時就可以直接用http請求看看具體的錯誤信息。

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

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

相關文章

用wp_trim_words函數實現WordPress截斷部分內容并保持英文單詞完整性

在WordPress中,wp_trim_words函數用于截斷字符串并限制單詞數量。如果你希望在截斷時保持單詞的完整性(讓單詞顯示全),可以通過自定義函數來實現。 以下是一個示例代碼,展示如何修改你的代碼以確保截斷時顯示完整的單…

Codeforces Round 1042 (Div. 3) G Wafu! 題解

Codeforces Round 1042 (Div. 3) G Wafu! 題解 題意:每一次操作刪除集合中最小的元素 x,并產生新的 x - 1 個元素值分別為 1 2 3 … x - 1 放入集合之中。 每次操作一個數 x 可以使得最終答案乘上 x,問我們操作 k 次在模 1e9 7 的基礎上最終…

APP與WEB測試的區別?

web與app核心區別:一個基于瀏覽器 ,一個基于操作系統這是所有區別的根源:Web測試:測試對象是網站,通過瀏覽器(Chrome,Firefox等)訪問,運行環境核心是瀏覽器引擎;App測試:測試對象是應…

2.滲透-.WEB運行原理-ZBlog安裝(進一步理解數據庫)

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 內容參考于:微塵網校 上一個內容:1.滲透-.WEB運行原理(搭建一個WEB程序) 首先把服務運行起來 然后訪問下圖紅框…

MapBox GL地圖上繪制圓形區域,在區域中心點添加標記點及文本提示的實現方法

MapBox GL地圖上繪制圓形區域,在區域中心點添加標記點及文本提示的實現方法:// 繪制影響區域 const addArea (circle) > {if (!map.current || !circle) return;const areaId circle-area;const epicenterId circle-epicenter;const radiusKm cir…

基于 Docker Compose 的若依多服務一鍵部署java項目實踐

基于Docker Compose的若依多服務一鍵部署實踐 在項目開發中,多服務部署常常讓人頭疼。環境配置復雜、操作步驟繁瑣,稍不注意就容易出錯。不過,有了 Docker Compose ,這些問題就簡單多啦!它能幫我們高效編排多個容器&am…

MyBatis-Plus 使用 Wrapper 自定義 SQL 查詢

目錄 1. 注意事項 2. 示例代碼 2.1 實體類 2.2 Mapper 接口 2.3 測試類 3. 運行效果 4. 總結 在實際項目中,雖然 MyBatis-Plus 提供了豐富的內置方法和 QueryWrapper 條件構造器,但有時我們需要 自定義 SQL 來實現更復雜的查詢邏輯。 MyBatis-Plu…

NumPy/PyTorch/C char數組內存排布

1. 關于 np.random.randn(2, 3) 的數據存儲數據類型 (Data Type):np.random.randn 默認生成的是 64位(8字節)雙精度浮點數 (numpy.float64)。所以每個數字占 8個字節,而不是8位(1字節)。這是一個關鍵區別。…

Elasticsearch精準匹配與全文檢索對比

在 Elasticsearch 中,精準匹配檢索和全文檢索匹配檢索是兩種核心查詢方式,主要區別在于匹配規則、分詞處理、適用場景和底層實現邏輯。以下是詳細對比:一、核心區別總結特性精準匹配(Term Query)全文檢索(M…

【鴻蒙開發001】上下翻頁-翻書效果實現【可復用】

先看效果:一、設計思路:根據所需要的最終效果,最終設計如下:(1)整體設計了4個模塊,這里分別標記為:A1,A2,B1,B2。具體說明如下:A模塊&…

H20 性能表現之 Qwen3-235B

上期為大家分享了H20性能表現之Qwen3-Coder-480B(以下稱480B),今天,我為大家繼續帶來新的評測,這次,介紹的是 Qwen3-235B-A22B-Instruct-2507(以下稱235B),這也是阿里這陣…

Diagnosing bias and variance|診斷偏差和方差

----------------------------------------------------------------------------------------------- 這是我在我的網站中截取的文章,有更多的文章歡迎來訪問我自己的博客網站rn.berlinlian.cn,這里還有很多有關計算機的知識,歡迎進行留言或…

前端性能優化:從指標監控到全鏈路落地(2024最新實戰指南)

前端性能優化:從指標監控到全鏈路落地(2024最新實戰指南) 引言:性能不是“可選項”,而是“生存線” 在前端開發中,“性能優化”常被視為“錦上添花”的工作——但數據告訴我們,它早已成為決定…

Kafka面試精講 Day 1:Kafka核心概念與分布式架構

【Kafka面試精講 Day 1】Kafka核心概念與分布式架構 在“Kafka面試精講”系列的第1天,我們將深入解析Apache Kafka最根本的基石——核心概念與分布式架構。作為大數據和后端開發領域面試中的“必考題”,諸如“Kafka是如何實現高吞吐量的?”、…

github copilot學生認證教程,免費使用兩年Copilot Pro!!(避免踩坑版)

先放結果,本人是先后申請了三次: 1、第一次直接用的學生證,打開對著電腦攝像頭直接拍了一張,失敗了,如下,理由是沒有開啟雙重認證!!,并且學生證內頁沒有學校名稱&#x…

Shiro介紹以及一個原始例子

目錄基本功能核心組件應用場景優勢Shiro 核心工作流程(以 Web 應用登錄為例)一個例子【驗證,授權]:Shiro 是一個強大且易用的 Java 安全框架,提供了 身份驗證、授權、加密和會話管理等功能,可幫助開發人員輕松確保應用…

AI-調查研究-59-機器人 行業職業地圖:發展路徑、技能要求與薪資全解讀

點一下關注吧!!!非常感謝!!持續更新!!! 🚀 AI篇持續更新中!(長期更新) AI煉丹日志-31- 千呼萬喚始出來 GPT-5 發布!“快的…

LeetCode算法日記 - Day 22: 提莫攻擊、Z字形變換

目錄 1. 提莫攻擊 1.1 題目解析 1.2 解法 1.3 代碼實現 2. Z字形變換 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 提莫攻擊 495. 提莫攻擊 - 力扣(LeetCode) 在《英雄聯盟》的世界中,有一個叫 “提莫” 的英雄。他的攻擊可以讓敵方英…

Unity筆記(七)——四元數、延遲函數、協同程序

寫在前面:寫本系列(自用)的目的是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解,方便自己以后快速復習,減少遺忘。主要是C#代碼部分。六、四元數歐拉角具有旋轉約定,也就是說,無論你調整角度的順序是什么&…

用大語言模型提升語音翻譯:一種全新的端到端方法

用大語言模型提升語音翻譯:一種全新的端到端方法 在語音翻譯領域,如何將說話內容快速準確地轉化為另一種語言,一直是研究者們關注的焦點。隨著大語言模型(LLM)的興起,我們迎來了一個全新的機遇:利用LLM的強大能力,來提升語音翻譯系統的性能。最近,一項名為“End-to-E…