对象识别在 QTP/UFT 中是如何工作的?
什么是对象识别?
QTP 也使用一种“类似人类”的技术进行对象识别。在录制期间,QTP 会尝试学习执行操作的 GUI 对象的属性。在运行期间,Micro Focus UFT 会将存储的对象属性与屏幕上可用对象的实际属性进行比较,并独立于其在屏幕上的位置唯一标识对象。
存储的对象及其属性统称为测试对象。
在运行期间,待测应用程序上可用的实际对象称为运行时对象。
这就是 HP UFT 的“测试对象模型”。
什么是对象库?
有关测试对象的信息存储在对象库中。
插件有助于提前指示Quick Test要录制对象的性质,从而减少学习其属性所需的时间。
以下视频教程演示了 QTP 如何识别 GUI 对象(屏幕上的对象)。
如果视频无法访问,请点击此处
QTP 将对象及其属性存储在对象库中,以便在运行时识别它们。一个对象可以有大量与之相关的属性。例如,在 Web 环境中,一个按钮可以具有以下相关属性。
如果QTP尝试记住对象的所有可用属性,则对象库的大小将膨胀,脚本执行时间将急剧增加。为避免这种情况,QTP 默认不存储对象的所有属性,而是存储有限数量的典型属性,这有助于其唯一识别。为各种环境和对象选择的属性(在录制时保存)存储在对象识别中。
对象描述、强制属性和辅助属性
一个对象的属性及其值称为对象描述。对象描述用于唯一标识相应的对象。例如,对于 WebButton 属性“name”及其值“Login”可以一起称为该 Web 按钮的对象描述。
要访问,请在 QTP 的“工具”菜单中选择“对象识别”。在“对象识别”对话框中,您可以看到所有已安装和加载的环境的下拉列表。
您可以选择一个环境,QTP 会自动填充属于该环境的所有受支持对象的列表。在右侧,QTP 列出了将为该对象存储的属性。该列表分为:
- 强制属性将默认存储为该对象。
- 辅助属性如果脚本录制期间 QTP 无法创建对象的唯一描述,它将存储辅助属性。
为了更好地理解这一点,请考虑一个 Web 图像的例子。
- 即使 QTP 可以单独使用 alt 属性唯一识别它,它也会存储 alt、HTML 标签、图像类型等强制属性的值。
- 如果它无法使用强制属性创建唯一描述,QTP 将存储辅助属性。在这种情况下,QTP 将存储 class 属性。
- 如果此属性有助于创建对象的唯一描述,QTP 将不会存储文件名和高度属性。如果 class 属性不足以创建唯一描述,QTP 将存储文件名属性。如果文件名属性创建了唯一描述,QTP 将不会存储高度属性,依此类推。
- 假设在录制时,QTP 只存储了 class 属性。在运行时,QTP 将忘记强制属性和辅助属性之间的区别,并比较所有已录制的属性。
- 即使其中任何一个属性与存储值不匹配,脚本也会失败。