使用 abs_x / abs_y 或 x/y(相对)与 QTP/UFT 进行 WebElement 识别有多可靠?

How reliable is it to use abs_x / abs_y or x/y(relative) for WebElement recognition with QTP/UFT?

我正在尝试编写一个函数来识别具有以下标识属性的网络元素:

  1. class
  2. 内文
  3. innerHTML
  4. abs_x 和 abs_y
  5. x 和 y(相对)

问题是,"class" 的值会随着不同的应用程序更新而不断变化,因此无法用于识别。

现在,我可以选择使用 absx/absy 或 x/y。 我相信 x/y 会更好。 它有多可靠?

不可能!!您不应该使用任何坐标作为属性来查找元素!! 它根本不可靠。此外,如果您尝试 运行 另一台具有不同分辨率的计算机上的脚本,它可能无法正常工作。

使用 'innertext' 和 class 名称。如果 class 名称不断变化,它是否具有 class1、class2 等任何模式?如果是,您可以使用正则表达式。最坏的情况,你可以使用 Ordinal identifiers

我永远不会在我的测试中考虑坐标!!

如果可能,请避免使用坐标进行识别,因为这非常脆弱(任何微小的变化都可能破坏测试)。显然 abs_xx 差,因为除了页面中的元素位置外,它还取决于浏览器的位置。

我会检查该元素,看看是否有任何属性可以始终如一地标识它,它可能是您列出的属性以外的东西(例如 titlerole),如果可能的话使用那而不是位置。

其实用坐标abs_x和abs_y总是靠不住的,这根本不是真的!!对它们进行硬编码总是不可靠的,但正确地动态使用它们是 100% 可靠的。

假设识别一个对象的唯一方法是通过它相对于另一个可以识别的对象的位置。使用对象存储库,这是使用内置 "Visual relationship identifier" 完成的。使用 abs_x and/or abs_y 坐标在编程描述中实现同样的功能——视觉关系识别。

例如,如果您有一个可识别的对象,其 abs_y 值与无法识别的对象相同(即,它们始终位于同一水平轴上或同一轴上加上或减去一些数字) ,定位到可以正常识别的对象,使用GetROProperty,得到它的abs_y坐标。然后,用刚刚得到的abs_y的值定位另外一个无法定位的对象。也就是说,可识别对象的 abs_y 坐标将是无法识别的对象的 abs_y 值。同样,这正是 "Visual relationship identifier".

的内置对象存储库功能。

示例:

sAbsY = Browser(...).Page(...).WebElement(...).GetROProperty("abs_y")
Browser(...).Page(...).WebElement(..., "abs_y:=" & sAbsY).Click