练习 1.8:更新对象图

在开始本练习之前,您必须先完成练习 1.7:使用对照器更新验证点

在这个练习中,您将使用对象图来解决对象识别警告问题。您还将使用正则表达式来更灵活地识别对象。

当您看到识别失败或警告问题时,请查看日志消息。在练习 1.7 结束时,您应该已经使该日志保持打开状态。如果日志没有打开,则在“项目”视图中双击以打开该日志。日志中保留一条单独的警告。事件标题为“对象识别效率低(超过警告阈值)”。
  1. 查看日志底部附近的警告部分中的 ObjectLookedForobjectFound 字段。

在 ClassicsA 中,密码字段的名称为 Remember Password。在 ClassicsB 中为 Remember The Password。当您对 ClassicsB 回放脚本时,这一差别导致了对象识别不完全匹配。

  1. 查看日志中的行号字段并记下号码。
  2. 关闭日志,回到 Functional Test。
  3. 单击脚本窗口中的任一处,然后单击浏览 > 转至行
  4. 输入日志失败消息中的行号,并单击确定

    光标移到该行号的左侧页边空白处。

  5. 您也可以通过查看 Functional Test 窗口底部的指示符来查找行号。该处会显示行号和光标在行内的位置。例如,“43:9”表示的位置是第 43 行中从左侧页边距起向右计数的第 9 个字符。您的脚本中的对应行应为:

    RememberPassword().clickToState(SELECTED);

    这一行代表您单击密码复选框。脚本中的这一行显示了失败的对象。现在您可以在对象图中查找该对象。

  1. 要查找对象,请回到脚本浏览器(右侧窗格)中的测试对象的列表。

您将看到测试对象文件夹下列出的“rememberPassword”。

  1. 双击 rememberPassword 对象,在对象图中打开它。
  1. 单击对象图菜单上的测试对象 > 全部接受全部接受)。如果该命令变灰,则不进行任何操作。

请注意,所有对象都更改为黑色文本。文本保持蓝色(表示新对象),直到您接受图中的对象为止。您应该在第一次查看新建的对象图时接受对象。

  1. 如果密码复选框对象在图中未被选中,则选中它。(该对象名为“Java: checkBox: checkRemember: javax.swing.JCheckBox”。)
  2. 查看对象图底部的识别选项卡中列出的识别属性。

您可以看到,这是 ClassicsA 中的对象,因为它的 accessibleContext.accessibleName 属性显示为“Remember Password”。这是“旧的”对象。然而,当您对 ClassicsB 回放脚本时,该对象的文本会更改,因此 Functional Test 将它识别为“新的”对象。您希望在这种情况下使用新的对象属性,因此必须将它添加到图中。

要将新对象添加到图中,请打开 ClassicsB 和 Member Logon 对话框。
  1. 在对象图菜单上单击应用程序 > 运行
  2. 使用箭头选择 ClassicsJavaB。(务必选中 B。)
  3. 单击确定
  4. 在 ClassicsCD 中,选择任一 CD 并单击 Place Order

Member Logon 对话框打开。

  1. 如有必要,将对象图向屏幕下方移动,以看到它的全部内容。在对象图菜单中,单击测试对象 > 插入对象

这与“验证点向导”的选择对象页面中的对象查找器工具相同。

  1. 如果选中了“前进到下一页”选项,请将它清除。
  2. 使用对象查找器工具,在“Member Logon”对话框中选中“Remember the Password”复选框。

选中该复选框以后,您将看到 accessibleContext.accessibleName 属性现在为“Remember The Password”。如有必要,拉伸对象图的边框以查看属性。

  1. 选择对象页面上,单击下一步
  2. 不要更改选择对象选项页面上的任何内容,并单击完成
新的复选框对象现在显示在对象图中。
  1. 单击另一个对象,并注意到列出的新项显示为蓝色,并且单词“New”出现在行首。

现在旧的和新的对象都列在图中。您希望统一这两个对象,并从每个对象中提取您希望新对象具备的属性。

  1. 要统一对象,请单击旧对象(标记为“CheckBox: checkRemember”的原始复选框),并将它拖动到列表中的新对象上。先将光标箭头的顶端放在新对象上,然后释放鼠标按键。

统一测试对象向导出现。

  1. 如有必要,将统一向导拉宽,以查看靠下部分的更多信息。
  2. 在左下部分,显示原始对象的属性。它应标记为“Source: RememberPassword”。那就是 ClassicsA 中复选框的文本内容。在右下部分,它应标记为“Target: RememberThePassword”。那就是 ClassicsB 中复选框的文本内容。

    因为您将旧对象拖动到新对象,因此新对象的识别属性将在向导顶部填入数据。通常,如果新属性是首选的属性,Functional Test 就将其放在顶部。然而,某些旧的管理属性可能是首选属性。例如,Functional Test 保留旧属性集中的正则表达式。要使用旧对象的某一属性,则双击旧对象网格中的该属性,该属性将复制到统一过的对象中。在这种情况下,我们希望使用新对象的所有属性,这些属性已经填入了数据。

  3. 单击下一步

对象图中受这种更改影响的所有脚本都被列出。仅有一个脚本,即 Classics,受到影响。

  1. 单击完成
  2. 在对象图中,单击对象图工具栏上的文件:保存按钮,保存您所作的更改并关闭对象图。
现在我们将再次对 ClassicsB 回放脚本,以确认它通过测试。
  1. 首先关闭 ClassicsCD 的两个对话框。
  2. 在 Functional Test 中,单击工具栏上的运行 Functional Test 脚本
  3. 选择 Classics 日志并单击完成
  4. 现在脚本通过,无任何警告!请注意,回放不再在密码复选框对象处暂停,因为识别属性现已匹配。

    这种对象统一功能是在对象的识别属性发生预期变化时更新脚本的一种简便方法。该功能的一个主要优点是,如果您的对象图正由很多脚本使用,则当您在向导中作更改时,可以更新所有脚本。不必手工编辑多个脚本,您可以在图中作一次更改,更改会自动传播到使用它的所有脚本。此功能可以节省您的时间。

    注:还有一种更简便的方法可以在测试对象的识别属性发生变化时更新属性。不需使用本练习中描述的“统一”向导,您可以从对象图中选择测试对象以更新其识别属性。当测试对象显示在“对象图”树中时,右键单击该对象,并从弹出菜单中选择更新识别属性。执行该操作时,您需要运行测试应用程序,这样 Functional Test 才能获得更新后的识别属性。仅当您不想使用旧对象的任何属性时,才会使用这种更新方法。

  5. 关闭日志。

现在您可以开始进入练习 1.9:更改识别首选项

使用条款 | 反馈
(C) Copyright IBM Corporation 2002, 2004. All Rights Reserved.