当前位置: 首页 > news >正文

在 JavaScript中编写 Appium 测试(入门)

1.编写一个测试 (JS)

要在 JavaScript(Node.js)中编写 Appium 测试,我们需要选择一个与 Appium 兼容的客户端 库。维护最好的库和 Appium 团队推荐使用的库是 WebdriverIO, 所有就让我们使用它吧。既然我们已经安装了 Appium,我们 已经满足了 Node 和 NPM 的要求。因此,只需在计算机上创建一个新的项目目录 然后在其中初始化一个新的 Node.js 项目

import { remote } from 'webdriverio';// 配置Appium测试所需的设备和应用信息
const capabilities = {platformName: 'Android',                  // 测试平台为安卓'appium:automationName': 'UiAutomator2', // 使用UiAutomator2自动化引擎'appium:deviceName': 'emulator-5554',    // 目标设备名称(通过adb devices获取)'appium:appPackage': 'com.android.settings', // 被测应用包名(设置应用)'appium:appActivity': '.Settings',       // 启动的Activity名称
};// 从环境变量获取Appium服务器端口,默认4723
const port = process.env.APPIUM_PORT ? parseInt(process.env.APPIUM_PORT, 10) : 4723;
// 验证端口有效性
if (isNaN(port)) {console.error('Invalid APPIUM_PORT environment variable');process.exit(1);
}// 配置WebDriver连接选项
const wdOpts = {hostname: process.env.APPIUM_HOST || 'localhost', // Appium服务器地址port,                                              // 服务器端口logLevel: 'info',                                 // 日志级别capabilities,                                      // 传递设备和应用配置
};/*** 执行自动化测试的主函数* 1. 连接Appium服务器* 2. 定位并点击设置中的电池选项* 3. 清理资源并退出*/
async function runTest() {const driver = await remote(wdOpts); // 初始化WebDriver会话try {// 通过ID定位设置中的电池选项(注意:此处ID需要根据实际应用UI调整)const batteryItem = await driver.$('id=com.android.settings:id/battery_item_id');await batteryItem.click(); // 执行点击操作} finally {await driver.pause(1000); // 等待1秒便于观察结果await driver.deleteSession(); // 关闭会话释放资源}
}// 执行测试并处理异常
runTest().catch((error) => {console.error('Test failed:', error);// 可扩展错误处理逻辑,如发送通知、记录详细日志等
});

基本上,这段代码正在执行以下操作:

  1. 定义一组 "Capabilities" 能力值(参数),以便 Appium 知道您想自动执行哪种任务。 要自动执行的任务。
  2. 在内置的 Android 设置应用程序上启动 Appium 会话。
  3. 找到 "Battery"列表项并点击它。
  4. 停顿片刻,纯粹是为了观察自动化视觉效果。
  5. 结束 Appium 会话。

现在,通过 NPM 安装 webdriverio 软件包

npm i --save-dev webdriverio

2.启动模拟器 + 连 Appium

  • 开模拟器:比如用雷神模拟器,启动后看到安卓桌面。

记得开启ROOT权限和ADB调试

  • 查设备:命令行输 adb devices,看到模拟器设备名(如 emulator-5554 ),说明连好了。

如果显示有多个设备可使用-s 指定设备进行连接

  • 改代码里的 deviceName:把 capabilities 里的 deviceName 改成 adb devices 显示的名称(比如 emulator-5554 )。

  • 重启 Appium + 跑脚本:确保 Appium 开着,再执行 node test.js,就能在模拟器上跑自动化啦~
http://www.xdnf.cn/news/955513.html

相关文章:

  • 【后端】单点登录
  • BI系统帮助企业释放数据价值
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第二篇(排名不分先后)】
  • Zabbix 高可用架构部署方案(2最新版)
  • DAY 45 超大力王爱学Python
  • JAVA实战开源项目:经方药食两用服务平台 (Vue+SpringBoot) 附源码
  • day030-Shell自动化编程-函数
  • Ubuntu Linux环境查看服务器资源,查询CPU,内存,环境变量等命令
  • 标注工具核心代码解析——load_image【canvas.py]
  • NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
  • 深度解析:DDoS攻击及其防御策略
  • 【深度解析】以太坊中的挖矿难度调整机制:从动态调节到“冰河时代”的倒计时
  • FOPLP vs CoWoS
  • 二、ROS2完成Docker容器和宿主机通信,使用ros2 topic list看到,但是无法echo
  • 驭码 CodeRider 2.0 产品体验:智能研发的革新之旅
  • OceanBase 桌面版
  • 从零开始了解数据采集(二十八)——制造业数字孪生
  • Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
  • 基于FPGA的PID算法学习———实现P比例控制算法
  • 协同过滤算法进行电影推荐
  • java教程笔记(十三)-synchronized和ReentrantLock
  • Hilt vs Dagger2:Android 依赖注入框架对比
  • 2025年css+html面试题
  • PH热榜 | 2025-06-07
  • 有限自动机到正规文法转换器v1.0
  • 土建施工员考试:建筑施工技术重点知识有哪些?
  • Java中方法调用参数传递机制的理解和示例验证
  • NFT模式:数字资产确权与链游经济系统构建
  • 什么是VR全景展示?VR全景展示的用途
  • 微信小程序云开发平台MySQL的连接方式