代码开发
CukeTest 提供远程自动化功能,使用户能够在本地开发、调试和执行远程设备上的自动化脚本。本文将介绍如何开发远程自动化脚本,并提供实际的示例代码。
远程自动化实战示例:Windows 记事本
以下示例展示了如何连接远程 Windows 10 设备,并自动操作系统自带的“记事本”应用,完成文本输入、文件保存等任务。
脚本操作流程:
- 连接远程设备;
- 启动记事本;
- 输入文本;
- 点击菜单保存文件;
- 设置保存路径并保存;
- 关闭记事本;
- 断开远程连接。
示例代码:
JavaScript
Python
const { CukeTest } = require("cuketest");
(async () => {
let auto = await CukeTest.connect({
wsEndpoint: 'ws://192.168.1.10:3131/ws'
});
const { runSettings: RunSettings, winAuto: Auto, util: Util } = auto;
await RunSettings.set({ slowMo: 1000, reportSteps: true });
let modelWin = await Auto.loadModel(__dirname + "/recording.tmodel");
await Util.launchProcess("C:\\Windows\\System32\\notepad.exe");
await modelWin.getDocument("文本编辑器").set("Hello World");
await modelWin.getMenuItem("文件(F)").click(20, 5);
await modelWin.getMenuItem("保存(S)").click(45, 5);
await modelWin.getEdit("文件名:1").set("C:\\temp\\helloworld.txt");
await modelWin.getButton("保存(S)1").click();
await modelWin.getButton("关闭").click();
auto.close();
})();
import os
from auto.sync_api import sync_auto
def recording():
with sync_auto('ws://192.168.1.10:3131/ws') as auto:
RunSettings = auto.runSettings
Auto = auto.winAuto
Util = auto.util
RunSettings.set({"slowMo": 1000, "reportSteps": True})
modelWin = Auto.loadModel(os.path.dirname(os.path.realpath(__file__)) + "/recording_1.tmodel")
Util.launchProcess("C:\\Windows\\System32\\notepad.exe")
modelWin.getDocument("文本编辑器").set("Hello World")
modelWin.getMenuItem("文件(F)").click(33, 2)
modelWin.getMenuItem("保存(S)").click(50, 15)
modelWin.getEdit("文件名:1").set("C:\\temp\\helloworld.txt")
modelWin.getButton("保存(S)1").click()
modelWin.getButton("关闭").click()
auto.close()
if __name__ == "__main__":
recording()
脚本开发中的注意事项
在开发远程自动化脚本时,了解以下关键要点能够帮助您确保脚本在远程环境中顺利执行:
1. 自动化库必须从 auto
实例中引入
在远程脚本中,所有自动化库(如 winAuto
、util
、keyboard
、mouse
等)必须从远程连接返回的 auto
实例中获取。
- 正确方式(从 auto 实例中解构):
Python
Auto = auto.winAuto Keyboard = auto.keyboard
- 错误方式(本地导入,会导致代码在本地执行):
Python
from leanproAuto import Util # ❌
若使用错误的导入方式,脚本将尝试在本地执行,而非远程环境。
2. 远程平台不支持的自动化类型不能使用
远程连接返回的 auto
对象仅包含当前平台支持的自动化能力。例如:
- 在远程 Windows 上,不能访问 Linux 平台特有的
atkAuto
; - 脚本中若意图使用不支持的库,如
auto.atkAuto
,将引发错误。
✅ 在连接远程设备前,请先确认目标平台支持的自动化能力。