对象属性

在模型管理器中,每个节点都代表一个模型对象,用于匹配和操作自动化应用中的控件。每个对象通过其标识属性与目标控件进行匹配,并通过API执行操作。理解这些标识属性的作用,能够帮助你在不同场景下选择最佳匹配方式,确保识别的准确性和操作的稳定性。

每个控件对象都包含几个关键要素:描述性名称、在应用程序树中的位置、标识属性和其他属性、以及可选的图像。

对象属性

描述性名称

在模型管理器中,每个控件对象都有一个描述性名称(即模型树节点中显示的名称,如 buttontext1)。描述性名称主要用作脚本中获取对象的变量名(如 model.getButton("按钮名称")),目的是提高代码的可读性,但它不参与实际的界面控件定位与识别。

描述性名称与标识属性有着本质的区别:

  • 描述性名称(仅用于脚本调用):它主要作为代码中获取该对象的变量名,目的是提高代码的可读性。描述性名称不参与实际的界面控件定位与识别。
  • 标识属性(用于控件匹配):标识属性是真正用于定位和匹配目标控件的属性,是自动化识别的核心依据。
  • 命名规则与重名递增:CukeTest 默认会使用识别到的某个属性作为描述性名称。如果在同一层级或同一个模型文件中出现重名,CukeTest 会自动在名称后递增数字作为后缀(如 buttonbutton1),这仅仅是为了在模型内解决调用变量名冲突的问题,并不是界面真实的属性。
  • 修改命名规则:默认的描述性名称直接取自识别到的某个控件属性,该属性在某些应用中可能缺乏业务含义,导致可读性不佳。如果希望生成的名称更具可读性,可以通过侦测规则中的 nameAfter 选项,指定一个更有业务含义的属性(例如 automationId)来作为名称。

Tip

描述性名称可以随时修改,不会影响控件的识别和定位。但修改后需要同步更新脚本中引用该名称的代码,否则脚本将无法正确获取对应控件。

标识属性

标识属性是定位目标控件的关键。当我们需要对某个控件进行操作时,首先通过这些标识属性来找到该控件,之后再执行相关操作。如果标识属性设置不当,可能会遇到以下问题:

  1. 无法匹配到控件:提示错误 1001:对象不存在
  2. 匹配到多个控件:如果匹配到多个控件,系统会返回一个控件数组,默认情况下操作第一个控件,但这可能导致错误操作。

为避免这些问题,应该通过添加或优化标识属性来提高控件匹配的准确度。

如何添加和删除标识属性?

  • 添加标识属性 添加标识属性:可通过添加额外的识别属性来提高匹配准确性。 若要将“其它属性”中的某个属性设为标识属性,可在该属性上右击并选择“设为标识属性”
  • 删除标识属性 删除标识属性:将标识属性移出,不再用于匹配控件。

更新控件的标识属性

如果控件的属性在应用中发生了变化,可以使用 “从应用更新属性” 功能来同步最新的属性信息,而不需要手动修改测试脚本。点击 从应用更新属性 按钮后,进入侦测模式,选取需要更新的控件,从而更新当前对象的标识属性。

编辑标识属性

标识属性的值可以直接编辑和修改,只需点击对应属性值的文本进行调整。

修改匹配模式

有些控件的属性(例如 nametext)可能会动态变化,为了提高识别的灵活性,可以修改匹配模式。常见的匹配模式包括:

  1. i 包含:属性值包含指定文本。
  2. s 起始:属性值以指定文本开头。
  3. e 结尾:属性值以指定文本结尾。
  4. ~ 正则:使用正则表达式匹配属性值。
  5. 文本:直接匹配完整文本。

修改匹配模式

标识属性的最佳实践

  • 默认属性推荐:通常,在保存控件对象时,CukeTest 会尝试选择能够唯一标识应用程序中的对象的属性,比如typenameautomationId等。但是,在某些情况下,您可能希望向标识属性添加额外的属性或删除不必要的属性。例如,您还可以更改属性值以匹配测试应用程序中的更改。

  • 动态属性的注意事项:如果控件的某些属性是动态生成的,如显示文本、标签等,避免将这些属性作为识别依据。例如下图中,识别一个计算器的结果时,不应使用name属性,因为它会随着计算结果的变化而变化。相反,应手动删除动态属性,或根据变化规律修改匹配模式,确保能够匹配到正确的控件。

对于复杂或动态变化的应用,可以使用侦测规则来进一步优化控件识别。

不可靠的属性

区分标识属性和其它属性

在模型管理器中,对象属性被分为标识属性其他属性。标识属性用于唯一标识应用程序中的控件,而其他属性只用于记录,并不参与控件匹配。如果需要,也可以通过“设为识别属性”将其他属性升级为标识属性,帮助提高匹配精度。

标识属性 vs 运行时属性

  • 标识属性:用于匹配控件的属性,是固定的,保存在模型文件中,或通过代码描述。为了提高识别效果,还可以使用辅助属性如indexsearchHint等。

  • 运行时属性:在自动化过程中动态获取的控件属性值,如控件的可见状态、位置坐标等。这些属性通常用于验证或操作控件的当前状态。虽然大多数标识属性在运行时也是可用的,但运行时属性更侧重于控件的实时状态,通常用于验证控件当前状态。

不同自动化技术的识别属性

不同类型的控件对象会有不同的识别属性,具体信息可以参考各个技术的帮助文档:

results matching ""

    No results matching ""