处理模糊识别

在回放期间的某些情况下,Functional Tester 可能无法区分待测软件中的两个相似对象。本主题描述如何处理这些情况。

例如,在 HTML 应用程序中,当浏览器的多个实例处于活动状态时,如果工具栏操作按照以下示例记录,那么将无法根据这些操作来区分两个浏览器:

BrowserToolbar_Back().click()
BrowserToolbar_Forward().click()

在此类情况下,Functional Tester 通过查找浏览器(通过其当前装入文档来识别,这被称为目标对象的锚点)中的工具栏按钮来避免模糊识别。例如:

BrowserToolbar_Back(Browser_htmlBrowser(Document_MyHomePage(),
  DEFAULT), DEFAULT).click();

工具栏“后退”按钮由浏览器锚定,而浏览器又由文档“My HomePage”锚定。当然,如果浏览器的各实例所装入的文档相同,那么此示例无效。请注意,将锚点作为参数的 helper 脚本方法也需要指定组件状态的其他参数(在以上示例中为 DEFAULT 参数)。HTML 对象的缺省状态为 LOADED。对于 HTML 组件,也可能是 LOADING 和 UNINITIATED。Java™ 对象的缺省状态为 SHOWING 和 ENABLED。Java 对象的其他受支持状态标志为 NOT_SHOWING 和 DISABLED。

此外,您还可以为浏览器实例使用 TestObject 引用以及在浏览器上调用 find 方法来识别浏览器实例,如下所示(请务必在完成时注销 TestObject):

TestObject browserOne = Browser_htmlBrowser(Document_MyHomePage(),
  DEFAULT).find();

测试脚本中的浏览器工具栏命令将如以下示例所示:

BrowserToolbar_Back(myBrowser, DEFAULT).click();

另外一种情况是,当测试有多个应用程序同时运行时,模糊识别也可能成为问题。在回放期间,诸如 b5().click() 的命令是模糊命令。由于 startApp 命令会返回 ProcessTestObject,因此,此引用可用来指定将特定命令应用到哪个应用程序。例如:

ProcessTestObject p1 = startApp("SwingTest");
ProcessTestObject p2 = startApp("TryIt");
...
//b5().click(); ambiguous on playback; which application?

b5(p1, DEFAULT).click();

在该示例的最后一行中,ProcessTestObject 充当定位所需应用程序的锚点。请注意,不必为 ProcessTestObject 调用 unregister 方法。


反馈