练习 1.10:使用正则表达式

在开始本练习之前,您必须先完成练习 1.9:更改识别首选项

我们要使用对象图完成的最后一个事项是将属性值转换成正则表达式。在这种情况下,正则表达式允许更灵活地进行对象识别。

我们刚才看到,脚本是如何对 ClassicsB 完全通过的。那是我们的目标,因为在 ClassicsB 中对应用程序所作的更改是正确的。因此,脚本现在所处的状态是我们希望继续保持的状态。现在,当您对 ClassicsA 回放脚本时,会由于前面所作的更改而失败。您可能希望允许某一对象的多个变异体通过测试。您可能拥有一个动态对象,或者拥有应用程序的几个版本以及某一对象的略微不同的多个版本,这两者都是正确的。您可以使用正则表达式来容纳某一属性值的多个版本(例如文本),以适应这种场景。

  1. 要对 ClassicsA 进行回放,则编辑脚本顶部的 startApp 命令,将 B 改为 A。
  2. 单击 Functional Test 工具栏上的运行 Functional Test 脚本

在回放期间,Functional Test 在密码复选框对象处暂停少许时间,但最终还是完成了。

现在脚本给出一个警告。请注意,在脚本中是同一个对象,即密码复选框。
  1. 关闭日志。
  2. 像练习 1.8 中所做的那样,通过双击脚本浏览器中的密码复选框,从密码复选框对象打开对象图。
  3. 单击对象图中的应用程序 > 运行,打开应用程序。
  4. 使用箭头选择 ClassicsJavaA。(请确保选中 A。)
  5. 单击确定
  6. 在 ClassicsCD 中选择任一 CD 并单击 Place Order,打开 Member Logon 对话框。
  7. 像练习 1.8 中所做的那样,通过单击测试对象 > 插入对象向图中添加新对象,并使用对象查找器在应用程序的 Member Logon 对话框中选择密码复选框。
  8. 单击下一步,然后单击完成
  9. 在对象图的顶部窗格中,将旧的复选框对象拖动到新的复选框对象,将两个对象统一起来。
  10. 如有必要,向外拖动一条边以拉宽“统一测试对象”向导,使字段延长。
您将使用两种不同的正则表达式:一种与 name 属性有关,另一种与 accessibleName 属性有关。

统一后的对象显示在统一测试对象属性网格(顶部窗格)中;name 属性的值为“checkRemember”。

  1. 在顶部窗格中,右键单击“checkRemember”值并单击将值转换成正则表达式

功能测试通过在值文本前面放置“xy”图标,将值指定为正则表达式。

  1. 再次双击名称值,以便编辑字段。
  2. 删除单词“check”,并将剩余部分编辑为:
  3. [rR]emember

  4. 单击该单元格的外部。

该模式允许单词“remember”在具有大写“R”或小写“r”时都能通过。这很重要,因为比较操作是区分大小写的,仅在完全匹配时才能通过。

accessibleName 属性的值为“Remember Password”。
  1. 右键单击 Remember Password 值,并选择将值转换成正则表达式来转换它。
  2. 然后双击该值,将它编辑为:
  3. Remember.*Password

    除去空格并添加句号(.)和星号(*)字符。

  4. 单击另一个单元格。

“.”允许任一字符出现在该位置。在应用程序的一个版本中,该属性的两个单词之间存在空格,而在其它版本中没有空格。该模式对于两种情况都适用。

  1. 在向导中单击下一步,然后单击完成
  2. 在对象图中单击文件:保存,保存更改并关闭对象图。
  3. 关闭 ClassicsCD。

现在这里出现了有趣的一幕!

  1. 再次对 ClassicsA 回放脚本。

关于 ClassicsA 的对象识别警告不再出现在日志中。

  1. 关闭日志。
  2. 更改 startApp 命令以回放 ClassicsB,并运行脚本。

对象识别对 ClassicsB 也通过!正则表达式允许更灵活地识别在应用程序的不同版本中具有不同属性的对象,在回放期间两者都能识别。关于正则表达式的更多信息,请参阅 Functional Test 帮助。

复审摘要中的资料,完成您的教程。

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