录制第一个自动化脚本
本篇以 Windows 录制功能为例,详细介绍从项目创建到脚本录制和回放的整个过程。对于其它类型应用的录制(如:Qt、Java、ATK、Electron、Web),方法和步骤也与此相同。
一、创建一个新项目
- 打开 CukeTest 客户端,你会看到一个欢迎页面。在页面上,点击 新建项目 按钮。
- 接下来,为你的项目命名。比如,你可以输入 notepad-test,这是一个我们将要录制的简单记事本自动化测试项目。
- 在项目模板选项中,选择 Windows 模板。语言可以选择使用你熟悉的编程语言:JavaScript或Python。
- 点击 浏览 按钮选择项目保存的位置,然后点击 创建。  
创建完成后,CukeTest会自动打开该项目。
二、录制你的自动化脚本
1. 设置录制参数
在 CukeTest 主界面的工具栏上,你会看到一个录制按钮。点击录制按钮旁边的小箭头,进入录制设置界面。这里你需要选择 Windows 录制模式。
- 在 应用程序路径 输入框中,填写要测试的应用程序路径。例如,记事本的默认路径是:C:\Program Files\LeanPro\CukeTest\bin\notepad.exe。
- 其他设置可以保持默认,不需要修改。  
2. 开始录制
点击 录制 按钮,CukeTest 会自动启动 notepad.exe。此时,你在被测应用中的所有操作(比如点击、输入内容)都会被自动记录下来。
提示: 录制功能非常直观,你的每一步操作都会被捕捉并生成脚本。记得按顺序执行操作,这样录制的脚本会更加连贯。

3. 执行测试操作
根据测试场景,手动完成以下操作:
- 打开记事本应用。
- 在编辑区输入 “Hello CukeTest!”。
- 检查输入的文字是否正确。
- 修改字体大小为36。
- 检查字体是否修改成功。
- 关闭记事本应用。
录制的过程中,CukeTest 会自动生成对应的操作脚本。
4. 添加检查点
录制过程中,我们通常需要验证操作是否成功,比如输入的文字是否正确,字体是否修改成功。这些验证点称为检查点。我们需要为上述操作添加两个检查点:
- 如何快速打开检查点对话框 - 在录制时,你可以按住 - Alt键并右击你想要验证的控件。这样可以快速打开检查点对话框,或者你可以通过录制工具栏上的检查点按钮来添加检查点。
- 添加第一个检查点 - 第一个检查点用于验证 - QTextEdit文本编辑控件中的文字内容。我们希望确认文本是否为- Hello CukeTest!。- 在属性检查点中,选择 Text.text属性。
- 确认其值为 Hello CukeTest!后,点击确认按钮。系统会自动生成以下脚本:
 
- 在属性检查点中,选择 
await model.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")   
- 添加第二个检查点 - 第二个检查点用于验证字体是否修改成功。这里我们可以使用图像检查点功能来验证控件的外观。 - 在检查点对话框中,切换到 图像检查点 标签页。
- 勾选需要检查的图片,点击 确认,系统会自动生成脚本:
 
await modelWin.getVirtual("QTextEdit_image").checkImage();modelWin.getVirtual("QTextEdit_image").checkImage()   
通过这些检查点,可以确保脚本运行时每一步操作都得到了验证。
提示: 检查点可以大大提高测试的准确性。属性检查点用来验证控件的某些属性(如文本),而图像检查点用来验证控件外观。
5. 完成录制
当你完成所有操作后,关闭记事本,并点击 CukeTest 工具栏中的 停止 按钮,结束录制。录制完成后,CukeTest 会自动生成对应的测试脚本。
三、回放录制的脚本
录制完成后,需要通过回放来验证脚本是否正确。
- 执行脚本:在 CukeTest 中,点击 运行脚本 按钮,CukeTest 会开始执行刚刚录制的自动化脚本。你可以看到被测应用被自动启动,所有步骤会依次执行。
- 检查回放效果:观察回放过程中,是否每一步操作都正确执行。如果出现任何异常,你可以对录制的脚本进行微调。
- 调整操作速度:脚本回放时可能有点慢,这是因为默认启用了“慢动作”模式。你可以通过修改脚本中的 slowMo参数来加快速度。将其设为0,即可让自动化测试以最快速度运行。
示例脚本
下面是CukeTest录制生成的脚本示例:
const { RunSettings, Util } = require("leanpro.common");
const { WinAuto } = require("leanpro.win");
(async () => {
   await RunSettings.set({slowMo: 1000, reportSteps: true});
   let modelWin = WinAuto.loadModel(__dirname + "/recording.tmodel");
   //启动应用 "notepad.exe"
   await Util.launchProcess("C:\\Program Files\\LeanPro\\CukeTest\\bin\\notepad.exe");
   //设置控件值为 "Hello CukeTest!"
   await modelWin.getEdit("QTextEdit").set("Hello CukeTest!");
   //检查属性
   await modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!");
   //点击 "Font"
   await modelWin.getButton("Font").click();
   //选择列表项 "36"
   await modelWin.getList("QFontListView").select("36");
   //点击 "OK"
   await modelWin.getButton("OK").click();
   //检查截屏图片
   await modelWin.getVirtual("QTextEdit_image").checkImage();
   //点击 "关闭"
   await modelWin.getButton("关闭").click();
})();import os
from leanproAuto import RunSettings, WinAuto, Util
def recording():
   RunSettings.set({"slowMo": 1000, "reportSteps": True})
   modelWin = WinAuto.loadModel(os.path.dirname(os.path.realpath(__file__)) + "/recording.tmodel")
   #启动应用 "notepad.exe"
   Util.launchProcess("C:\\Program Files\\LeanPro\\CukeTest\\bin\\notepad.exe")
   
   #设置控件值为 "Hello CukeTest!"
   modelWin.getEdit("QTextEdit").set("Hello CukeTest!")
   
   #检查属性
   modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")
   
   #点击 "Font"
   modelWin.getButton("Font").click()
   
   #选择列表项 "36"
   modelWin.getList("QFontListView").select("36")
   
   #点击 "OK"
   modelWin.getButton("OK").click()
   
   #检查截屏图片
   modelWin.getVirtual("QTextEdit_image").checkImage()
   
   #点击 "关闭"
   modelWin.getButton("关闭").click()
if __name__ == "__main__":
   recording()四、整合自动化测试用例与代码
在录制生成的文件中,除了脚本文件,你还会看到一个 .tmodel 文件和一个同名文件夹。录制过程中,CukeTest 会自动将所有涉及的控件信息保存到这些模型文件中,使我们可以复用这些控件的信息,提升脚本的灵活性和可维护性。
为了让自动化测试更高效、更具可扩展性,我们通常需要将这些录制脚本与测试框架整合在一起,形成一个完整的测试项目。CukeTest 支持多种测试框架,你可以根据实际需求选择适合的框架:
- 编写测试场景文件:创建描述性场景,让测试内容更直观。
- 使用 JavaScript 开发 BDD 项目:适合 BDD(行为驱动开发)测试的场景。
- 使用 Python 开发 BDD 项目:在熟悉 Python 的环境中构建 BDD 项目。
- 开发 pytest 项目:面向 Python 用户的经典测试框架。
将录制的脚本转换为场景文件
CukeTest 还提供了录制转换场景/步骤定义的功能,帮助你快速将录制的 JavaScript 或 Python 脚本转换为符合 Cucumber 和 pytest-bdd 语法的场景文件和步骤定义文件。这种转换方式可以省去部分手动编写的工作,帮助你直观地了解 Cucumber 和 pytest-bdd 的语法,让 BDD 测试更容易上手。
通过以上步骤,您已经完成了第一个自动化脚本的录制和初步整合。随着熟练度的提升,你可以尝试更复杂的测试用例设计。