< 上一课 | 下一课 >

课程 10:使用正则表达式

您要使用对象图进行的最后一项操作是将属性值转化为正则表达式。在这种情况下,正则表达式在对象识别方面提供了更大的灵活性。
我们刚才看到脚本是如何在 ClassicsB 完全通过的。那就是我们的目标,因为对 ClassicsB 中的应用程序所做的更改是正确的。 因此脚本现在已处于所希望的状态,可以继续操作。现在,您对 ClassicsA 回放该脚本时,其由于先前所做的更改而失败。您可能希望允许对象的多个变体通过。您可能具有动态对象或具有多个版本的应用程序(只是对象的版本略有不同),而两者都是正确的。 可以使用正则表达式来允许多个版本的属性值(如文本),从而适应这种场景。

打开对象图并统一对象

  1. 要对 ClassicsA 回放,请编辑脚本顶部的 startApp 命令,并将 B 改为 A。
  2. 单击“功能测试”工具栏上的运行功能测试脚本 在回放期间,Functional Tester 会在密码复选框对象上暂停一会,但是最终其会完成回放。脚本现在给出警告。请注意,在日志中其为相同的对象,即 rememberPassword 测试对象。
  3. 关闭日志,然后通过在“脚本浏览器”中双击 rememberPassword 从密码复选框对象打开对象图(如您在课程 8 中所作的一样)。
  4. 在对象图中,单击应用程序 > 运行来打开应用程序。 选择 ClassicsJavaA,然后单击确定
  5. 在 ClassicsCD 中选取任一 CD,然后单击下订单以打开“成员登录”窗口。
  6. 通过单击测试对象 > 插入对象向该图添加新对象。
  7. 使用“对象查找程序”来选中应用程序中“成员登录”窗口内的密码复选框。
  8. 单击下一步,然后单击完成
  9. 在对象图的顶端窗格中,将旧复选框对象拖动到新的复选框对象,以统一这些对象。
  10. 如有必要,通过将一边向外拉而将“统一测试对象”向导拉宽,从而使字段更长。

    您可以使用两个不同的正则表达式:一个在名称属性上,一个在文本属性上。

    已统一的对象显示在统一的测试对象属性网格(顶端窗格)中;名称属性的值为 checkRemember

将属性值转化为正则表达式

  1. 在顶端窗格中,右键单击 checkRemember 值,然后单击将值转化为正则表达式

    Functional Tester 通过值文本前面的“xy”图标,将该值指定为正则表达式。

  2. 再次双击名称值,以便您可以编辑该字段。
  3. 删除单词 check,然后将剩余的内容编辑为:[rR]emember
  4. 在单元格外单击。

    该模式允许带有大写“R”或小写“r”的单词“remember”通过。这很重要,因为比较是区分大小写的,并且只有准确匹配才可通过。文本属性的值是“记住密码”。

  5. 右键单击“记住密码”值,然后选择将值转化为正则表达式以转化该值。
  6. 双击该值并将其编辑为:Remember.*Password。 您正在除去空格并添加句点(.)和星号(*)字符。
  7. 单击其他单元格。

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

  8. 单击下一步,然后单击完成
  9. 单击对象图中的文件 > 保存以保存更改,然后关闭对象图。
  10. 关闭 ClassicsCD。
  11. 再次回放 ClassicsA 上的脚本。图像验证点和属性验证点失败。 图像验证点失败是因为对象 javax.swing.JLabel 的高度和权重不同。预期属性验证点会失败,这是因为文本 Trent Culpito 的订单从未更改为正则表达式。ClassicsA 上的对象识别警告不再出现在日志中。
  12. 关闭日志。
  13. 更改 startApp 命令以回放 ClassicsB,然后运行该脚本。

    ClassicsB 上的对象识别也通过了! 对于在不同版本的应用程序中具有不同属性的对象,正则表达式提供了更灵活的识别,且两者在回放期间都可识别。有关正则表达式的更多信息,请参阅“Functional Tester 帮助”。

< 上一课 | 下一课 >

反馈