环境安装

基本环境安装

安装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…