对象属性
在模型管理器中,每个节点都代表一个模型对象,用于匹配和操作自动化应用中的控件。每个对象通过其标识属性与目标控件进行匹配,并通过API执行操作。理解这些标识属性的作用,能够帮助你在不同场景下选择最佳匹配方式,确保识别的准确性和操作的稳定性。
每个控件对象都包含几个关键要素:描述性名称、在应用程序树中的位置、标识属性和其他属性、以及可选的图像。
什么是标识属性?
标识属性是定位目标控件的关键。当我们需要对某个控件进行操作时,首先通过这些标识属性来找到该控件,之后再执行相关操作。如果标识属性设置不当,可能会遇到以下问题:
- 无法匹配到控件:提示错误
1001:对象不存在
。 - 匹配到多个控件:如果匹配到多个控件,系统会返回一个控件数组,默认情况下操作第一个控件,但这可能导致错误操作。
为避免这些问题,应该通过添加或优化标识属性来提高控件匹配的准确度。
如何添加和删除标识属性?
- 添加标识属性 :通过添加额外的识别属性来提高匹配准确性,或将某些其他属性设为标识属性。
- 删除标识属性 :将标识属性移出,不再用于匹配控件。
更新控件的标识属性
如果控件的属性在应用中发生了变化,可以使用 “从应用更新属性” 功能来同步最新的属性信息,而不需要手动修改测试脚本。点击 按钮后,进入侦测模式,选取需要更新的控件,从而更新当前对象的标识属性。
编辑标识属性
标识属性的值可以直接编辑和修改,只需点击对应属性值的文本进行调整。
修改匹配模式
有些控件的属性(例如 name
或 text
)可能会动态变化,为了提高识别的灵活性,可以修改匹配模式。常见的匹配模式包括:
i 包含
:属性值包含指定文本。s 起始
:属性值以指定文本开头。e 结尾
:属性值以指定文本结尾。~ 正则
:使用正则表达式匹配属性值。文本
:直接匹配完整文本。
标识属性的最佳实践
默认属性推荐:通常,在保存控件对象时,CukeTest 会尝试选择能够唯一标识应用程序中的对象的属性,比如
type
、name
、automationId
等。但是,在某些情况下,您可能希望向标识属性添加额外的属性或删除不必要的属性。例如,您还可以更改属性值以匹配测试应用程序中的更改。动态属性的注意事项:如果控件的某些属性是动态生成的,如显示文本、标签等,避免将这些属性作为识别依据。例如下图中,识别一个计算器的结果时,不应使用
name
属性,因为它会随着计算结果的变化而变化。相反,应手动删除动态属性,或根据变化规律修改匹配模式,确保能够匹配到正确的控件。
对于复杂或动态变化的应用,可以使用侦测规则来进一步优化控件识别。
区分标识属性和其它属性
在模型管理器中,对象属性被分为标识属性和其他属性。标识属性用于唯一标识应用程序中的控件,而其他属性只用于记录,并不参与控件匹配。如果需要,也可以通过“设为识别属性”将其他属性升级为标识属性,帮助提高匹配精度。
标识属性 vs 运行时属性
标识属性:用于匹配控件的属性,是固定的,保存在模型文件中,或通过代码描述。为了提高识别效果,还可以使用辅助属性如
index
、searchHint
等。运行时属性:在自动化过程中动态获取的控件属性值,如控件的可见状态、位置坐标等。这些属性通常用于验证或操作控件的当前状态。虽然大多数标识属性在运行时也是可用的,但运行时属性更侧重于控件的实时状态,通常用于验证控件当前状态。
不同自动化技术的识别属性
不同类型的控件对象会有不同的识别属性,具体信息可以参考各个技术的帮助文档: