编程描述

相关项: GUI 操作、脚本化 GUI 组件和函数库

UFT One 识别应用程序中的对象时,它将合适的测试对象添加到对象存储库中。当对象存在于对象存储库中之后,可以在编辑器中添加语句,以在该对象上执行其他操作。要添加这些语句,通常在对象层次结构中输入每个对象的名称 (不区分大小写) 作为对象描述,然后添加合适的操作。

因为对象存储库中的每个对象有唯一名称,所以您只需指定对象名称。在运行会话期间,UFT One 根据对象名称和父对象在对象存储库中查找对象,并使用该测试对象的已存储测试对象描述来识别应用程序中的对象。

但是,您也可以指示 UFT One 在对象上执行操作,而无需引用对象存储库或对象名称。您为 UFT One 提供了一系列属性和值,UFT One 可以使用它们标识要在其上执行操作的一个或多个对象,或包含作为描述属性 (对于图像识别对象) 的控件图像的文件。

此类“编程描述”在以下多种场景中会非常有用:

对象未存储在对象存储库中 有时,您的对象可能未存储在对象存储库中,但仍需要在测试运行期间进行识别。在这种情况下,您可以使用描述性编程来帮助 UFT One 在运行时查找此对象,方法是描述对象的属性,而非使用对象名称。
多个对象具有常见的相同属性 通常,当 UFT One 标识对象时,它会使用该对象的描述属性来帮助在应用程序中查找该对象。在某些应用程序中,应用程序对象具有唯一的描述属性。但是,在其他应用程序中,许多对象可能具有相同的描述属性,使 UFT One 更难以在应用程序中查找相应对象。在这种情况下,您可以使用描述替代对象的属性,而不是依赖于存储在对象存储库中的对象的描述属性。
对象在运行会话期间动态创建 在某些应用程序中,您具有根据用户输入动态创建的对象。在此类应用程序中,很难或无法将这些对象添加到对象存储库,因为当 UFT One 正在识别应用程序时,这些对象不“存在”于该应用程序中。因此,通过使用编程描述在运行时标识这些对象,UFT One 可以找到并标识应用程序中的对象。
不同版本的应用程序之间的对象不同 尤其在使用 Web 应用程序时,根据显示应用程序的浏览器,对象具有不同属性。因此,即使对象已添加到应用程序的对象存储库,UFT One 也可能会因每个浏览器类型呈现对象的方式不同而在标识对象时遇到问题。使用描述性编程代替静态对象描述属性可使您的测试对象在多种不同情况或浏览器版本中更加灵活,并且使 UFT One 能够查找该对象,而不受查找对象所在环境的影响。

示例:  

假设正在测试的网站将根据您提供的简历信息生成潜在雇主的列表,并且可以提供将您的简历发送到您从列表中选择的雇主名称的服务。您希望测试选择列表中显示的所有雇主,但您设计测试时,不知道页面上将显示多少复选框,当然您也无法知道每个复选框的确切对象描述。在此情况下,可以使用编程描述指示 UFT One 为满足描述的所有对象执行 Set "ON" 方法: HTML TAG = input, TYPE = check box.

有两种类型的编程描述:

  • 静态。列出直接在 VBScript 语句中描述对象的属性和值的集合。有关详细信息,请参阅静态编程描述

  • 动态。向 Description 对象添加属性和值的集合,然后在语句中输入 Description 对象名称。有关详细信息,请参阅动态编程描述

对于基本对象描述,使用静态类型直接在语句中输入编程描述将更方便。但是,在大多数情况下,使用动态类型提供更高的能力、效率和灵活性。

在运行结果中,测试对象名称两边的方括号指示该测试对象是在测试运行期间使用编程描述或 ChildObjects 方法动态创建的。