Testing 使用abs_x/abs_y或x/y(相对)进行QTP/UFT网页元素识别的可靠性如何?

Testing 使用abs_x/abs_y或x/y(相对)进行QTP/UFT网页元素识别的可靠性如何?,testing,ui-automation,qtp,hp-uft,Testing,Ui Automation,Qtp,Hp Uft,我正在尝试编写一个函数来识别具有以下标识属性的webelement: 阶级 内部文本 innerHTML abs_x和abs_y x和y(相对) 问题是,“类”的值随着不同的应用程序更新而不断变化,因此不能用于识别 现在,我可以选择使用absx/absy或x/y。 我相信x/y会更好。 它有多可靠?不可能!!您不应该使用任何坐标作为属性来查找元素!! 这根本不可靠。此外,如果您试图在另一台具有不同分辨率的计算机上运行脚本,则可能无法正常工作 使用“innertext”和类名。如果类名不断变化,它

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

  • 阶级
  • 内部文本
  • innerHTML
  • abs_x和abs_y
  • x和y(相对)
  • 问题是,“类”的值随着不同的应用程序更新而不断变化,因此不能用于识别

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

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

    使用“innertext”和类名。如果类名不断变化,它是否有类似class1、class2……等的模式。如果是,可以使用正则表达式。在最坏的情况下,您可以使用顺序标识符


    我在测试中从不考虑坐标!! 如果可能,避免使用坐标进行识别,因为坐标非常脆弱(任何微小变化都可能破坏测试)。显然,
    abs_x
    x
    更糟糕,因为它除了取决于页面中元素的位置外,还取决于浏览器的位置


    我会检查元素,看看是否有任何属性一致地标识它,它可能不是您列出的属性(例如,
    title
    role
    ),如果可能,请使用该属性而不是位置。

    实际上,坐标abs_x和abs_y的使用总是不可靠的,这一点都不是真的!!硬编码总是不可靠的,但正确地动态使用它们是100%可靠的

    举个例子,识别一个对象的唯一方法是通过它相对于另一个可以识别的对象的位置。使用对象存储库,这是通过使用内置的“可视关系标识符”实现的。在编程描述中,使用abs_x和/或abs_y坐标实现相同的功能-可视化关系标识

    例如,如果您有一个可识别的对象,其abs_y值与无法识别的对象相同(即,它们始终位于同一水平轴上或在同一轴上加上或减去某个数字),请定位可以以正常方式识别的对象,并使用GetROProperty获取其abs_y坐标。然后,使用刚刚获得的abs_y值,定位其他无法定位的对象。也就是说,可识别对象的abs_y坐标将是无法识别的对象的abs_y值。同样,这正是“可视关系标识符”的内置对象存储库功能

    例如:

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