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);
// 可扩展错误处理逻辑,如发送通知、记录详细日志等
});
基本上,这段代码正在执行以下操作:
- 定义一组 "Capabilities" 能力值(参数),以便 Appium 知道您想自动执行哪种任务。 要自动执行的任务。
- 在内置的 Android 设置应用程序上启动 Appium 会话。
- 找到 "Battery"列表项并点击它。
- 停顿片刻,纯粹是为了观察自动化视觉效果。
- 结束 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,就能在模拟器上跑自动化啦~