侦测规则

在使用 CukeTest 进行操作录制和控件侦测时,工具会自动为控件对象选择合适的标识属性和名称。

然而,对于某些复杂或动态变化的应用,默认规则可能无法完全满足需求。在这些情况下,您就需要手动调整标识属性和对象名称。这项工作可能会耗时费力——这时候侦测规则功能就派上用场了。它能够帮助您自动保存并使用最合适的控件属性,从而简化这个过程。

规则管理

如何使用

CukeTest 会在录制和侦测过程中自动应用已保存的规则。如果找到与当前控件相匹配的规则,CukeTest 会根据该规则的设定,而不是默认设置,来保存该控件的信息。如果同一个控件同时匹配多个规则,系统会同时应用这些规则,确保最佳的控件识别效果。

需要注意的是,侦测规则是全局适用的,也就是说它们会影响您打开的所有CukeTest实例,而不仅限于当前项目。

编辑规则

默认情况下,CukeTest 并没有预设侦测规则,您可以根据需要手动创建规则。要开始编辑规则,请按以下步骤操作:

  1. 打开 CukeTest 中的模型管理器。
  2. 点击工具栏上的 管理侦测(录制)规则 按钮。
  3. 在弹出的对话框中,您可以双击已保存的规则进行编辑,或点击 添加规则 创建新规则。

在规则编辑窗口中,您可以设置规则的名称、条件、操作等属性。

规则管理

规则详细设置

  1. 规则名称

    • 输入框中为当前规则命名,比如“WinForm 控件识别规则”。
  2. 条件设置(如果)

    • 属性:选择要检测的对象属性,常见的属性包括:classNameautomationIdnametext
    • 条件
      • exists:检查目标属性是否存在,通常用于确保控件具备该属性,默认值为true
      • matches:通过正则表达式匹配属性值,适用于属性值会动态变化的情况。
      • equals:完全匹配属性值。
      • 如果条件是exists,不需要填写值,默认即为true
      • 如果条件是matches,需填写匹配的正则表达式。
      • 如果条件是equals,则需提供明确的文本值。
  3. 操作设置(那么): 根据条件设置定义要执行的操作:

    • excludeNode:从控件树中排除此控件。
    • excludeProperty:从标识属性中排除指定属性。
    • includeNode:强制保留该控件,即使它默认会被忽略。
    • includeProperty:将某个属性标记为控件的标识属性。
    • nameAfter:使用指定属性的值为控件命名。
  4. 禁用此规则:如需暂时停用某条规则,您可以点击 禁用此规则 按钮。

确认设置无误后,点击保存按钮以保存规则。

导入和导出

您可以将创建的规则导出为 JSON 文件,并将其分享给其他人使用。也可以从 JSON 文件中导入规则到 CukeTest 中,确保不同测试环境中规则的统一性。

实际应用场景

在某些桌面应用中,控件的类名className属性可能会动态变化,比如在WinForm应用中,ToolBar控件的类名(如WindowsForms10.Window.8.app)后半部分常常是动态生成的,可能出现以下几种类名变化:

WindowsForms10.Window.8.app.0.3c82b81_r3_ad1
WindowsForms10.Window.8.app.0.2df5871_r3_ad1

这种动态变化会影响自动化脚本中的控件识别,导致测试不稳定。并且,当缺少name和text属性时,工具还会默认使用className作为控件的名称。而当大量控件的名称类似时,可能会使模型对象和测试脚本变得难以管理和维护。为了解决这些问题,您可以使用侦测规则,精确定义控件对象的保存信息。

Windows Forms示例

示例:处理 WinForm 动态类名

假设在 WinForm 应用中,控件的 className 属性会动态变化,您可以定义如下规则:

  • 如果
    • 属性className
    • 条件matches
    • ^WindowsForms10
  • 那么
    • 操作excludeProperty
    • className
    • 操作nameAfter
    • automationId

这个规则会识别所有以 WindowsForms10 开头的类名,避免将 className 作为控件的名称,而是优先使用 automationId 来命名控件,并将 className 排除在标识属性之外。这种设置可以提升脚本的可靠性,同时增强控件名称的可读性。

results matching ""

    No results matching ""