在开始本练习之前,您必须先完成练习 1.7:使用对照器更新验证点。
在这个练习中,您将使用对象图来解决对象识别警告问题。您还将使用正则表达式来更灵活地识别对象。
当您看到识别失败或警告问题时,请查看日志消息。在练习 1.7 结束时,您应该已经使该日志保持打开状态。如果日志没有打开,则在“项目”视图中双击以打开该日志。日志中保留一条单独的警告。事件标题为“对象识别效率低(超过警告阈值)”。在 ClassicsA 中,密码字段的名称为 Remember Password。在 ClassicsB 中为 Remember The Password。当您对 ClassicsB 回放脚本时,这一差别导致了对象识别不完全匹配。
光标移到该行号的左侧页边空白处。
RememberPassword().clickToState(SELECTED);
这一行代表您单击密码复选框。脚本中的这一行显示了失败的对象。现在您可以在对象图中查找该对象。
您将看到测试对象文件夹下列出的“rememberPassword”。
请注意,所有对象都更改为黑色文本。文本保持蓝色(表示新对象),直到您接受图中的对象为止。您应该在第一次查看新建的对象图时接受对象。
要将新对象添加到图中,请打开 ClassicsB 和 Member Logon 对话框。您可以看到,这是 ClassicsA 中的对象,因为它的 accessibleContext.accessibleName 属性显示为“Remember Password”。这是“旧的”对象。然而,当您对 ClassicsB 回放脚本时,该对象的文本会更改,因此 Functional Test 将它识别为“新的”对象。您希望在这种情况下使用新的对象属性,因此必须将它添加到图中。
Member Logon 对话框打开。
这与“验证点向导”的选择对象页面中的对象查找器工具相同。
选中该复选框以后,您将看到 accessibleContext.accessibleName 属性现在为“Remember The Password”。如有必要,拉伸对象图的边框以查看属性。
新的复选框对象现在显示在对象图中。
现在旧的和新的对象都列在图中。您希望统一这两个对象,并从每个对象中提取您希望新对象具备的属性。
统一测试对象向导出现。
在左下部分,显示原始对象的属性。它应标记为“Source: RememberPassword”。那就是 ClassicsA 中复选框的文本内容。在右下部分,它应标记为“Target: RememberThePassword”。那就是 ClassicsB 中复选框的文本内容。
因为您将旧对象拖动到新对象,因此新对象的识别属性将在向导顶部填入数据。通常,如果新属性是首选的属性,Functional Test 就将其放在顶部。然而,某些旧的管理属性可能是首选属性。例如,Functional Test 保留旧属性集中的正则表达式。要使用旧对象的某一属性,则双击旧对象网格中的该属性,该属性将复制到统一过的对象中。在这种情况下,我们希望使用新对象的所有属性,这些属性已经填入了数据。
对象图中受这种更改影响的所有脚本都被列出。仅有一个脚本,即 Classics,受到影响。
现在脚本通过,无任何警告!请注意,回放不再在密码复选框对象处暂停,因为识别属性现已匹配。
这种对象统一功能是在对象的识别属性发生预期变化时更新脚本的一种简便方法。该功能的一个主要优点是,如果您的对象图正由很多脚本使用,则当您在向导中作更改时,可以更新所有脚本。不必手工编辑多个脚本,您可以在图中作一次更改,更改会自动传播到使用它的所有脚本。此功能可以节省您的时间。
注:还有一种更简便的方法可以在测试对象的识别属性发生变化时更新属性。不需使用本练习中描述的“统一”向导,您可以从对象图中选择测试对象以更新其识别属性。当测试对象显示在“对象图”树中时,右键单击该对象,并从弹出菜单中选择更新识别属性。执行该操作时,您需要运行测试应用程序,这样 Functional Test 才能获得更新后的识别属性。仅当您不想使用旧对象的任何属性时,才会使用这种更新方法。
现在您可以开始进入练习 1.9:更改识别首选项。