演练:使用 CukeTest 录制 CukeTest 自身
你知道吗?CukeTest 本身就是一款使用 Electron 技术开发的应用。这意味着,你可以利用 CukeTest 的 Electron 录制功能来为 CukeTest 自身创建自动化测试脚本。
这不仅是一个有趣的事实,更是一个绝佳的练习,能帮助你快速掌握 Electron 应用的自动化测试技巧。
准备工作
在开始录制前,请先完成两项简单的准备工作。
1. 创建新项目
首先,在 CukeTest 中创建一个新的空项目,以便存放我们即将录制的脚本。
2. 检查缩放比例
为了保证录制坐标的准确性,建议在录制前将 CukeTest 的显示缩放比例恢复为 100%。
- 操作路径:在 CukeTest 的顶部菜单栏中,选择【视图】->【实际大小】。
如果你测试的其他 Electron 应用不支持在界面上调整缩放,可以在录制设置的“命令行参数”中填入
--force-device-scale-factor=1
来强制以 100% 比例启动应用。
录制步骤
准备就绪后,我们开始录制。
- 点击工具栏上“录制”按钮旁边的下拉箭头,选择【录制设置】。
在弹出的面板中,按如下配置:
- 类型: 选择
Electron
。 Electron 应用路径: 选择 CukeTest 的可执行文件。默认路径为
C:\Program Files\LeanPro\CukeTest\Cuke.exe
。
- 类型: 选择
- 点击【开始录制】按钮,CukeTest 会启动一个被控的新实例,现在你在新实例上的操作都会被记录下来。
录制时的注意事项:原生UI的处理
在录制过程中你会发现,并非所有操作都会被记录。
- 可以录制:所有在 CukeTest 主窗口界面内的点击、输入等操作(例如点击设置按钮、切换主题、修改选项等)。
- 无法直接录制:从主窗口弹出的原生操作系统对话框,例如点击“打开项目”后出现的文件选择器。
这是 Electron 录制的正常现象。对于这些原生UI操作,需要采用我们之前提到的分步录制与脚本整合策略来完成。详情请参考 应对原生UI:混合录制策略。
脚本成果
当你停止录制后,CukeTest 会自动生成相应的自动化脚本。以下是一个录制“打开设置 -> 修改语言和主题 -> 保存”操作的脚本示例:
const { _electron: electron } = require('leanpro.web');
(async () => {
const browser = await electron.launch({
args: [''],
executablePath: 'C:\\Program Files\\LeanPro\\CukeTest\\cuke.exe',
timeout: 40000
});
const page = await browser.firstWindow();
// 点击“设置”按钮
await page.getByRole('button', { name: '设置 配置设置' }).click();
// 切换语言和主题
await page.locator('#settings_code_lang').selectOption('py');
await page.locator('#color_theme').selectOption('dark');
// 切换到“高级”标签页
await page.getByRole('tab', { name: '高级' }).click();
await page.locator('div:nth-child(6) > .col-sm-2 > .cuketest-switch').click();
// 点击“保存”按钮
await page.locator('#btnSaveSettings').click();
await browser.close();
})();
from leanproWeb import WebAuto
def run(webauto: WebAuto) -> None:
browser = webauto.electron.launch(args=[""], executable_path="C:\\Program Files\\LeanPro\\CukeTest\\cuke.exe", timeout=40000)
page = browser.firstWindow()
# 点击“设置”按钮
page.get_by_role("button", name="设置 配置设置").click()
# 切换语言和主题
page.locator("#settings_code_lang").select_option("py")
page.locator("#color_theme").select_option("dark")
# 切换到“高级”标签页
page.get_by_role("tab", name="高级").click()
page.locator("div:nth-child(6) > .col-sm-2 > .cuketest-switch").click()
# 点击“保存”按钮
page.locator("#btnSaveSettings").click()
browser.close()
with WebAuto() as webauto:
run(webauto)
探索完整样例项目
本文的演练只是一个开始。CukeTest 内置了一个更完整的样例项目,它不仅包含了通过 Electron 录制生成的脚本,还演示了如何结合 Windows 自动化来操作文件对话框,实现了真正的端到端(End-to-End)自动化。
你可以通过 CukeTest 的欢迎页面或菜单栏的【帮助】->【样例】轻松找到并打开它,以进行更深入的学习。