只有在浏览器窗口 - UFT上可见时才识别对象

时间:2017-07-04 14:01:57

标签: web qtp hp-uft

我们正在使用UFT / QTP自动化Web应用程序。问题是UFT仅适用于在浏览器窗口部分中看到的那些Web对象。如果任何对象/元素位于页面底部,则需要在窗口中向下滚动才能看到。 UFT无法处理这些对象。我们已编写代码来向下翻页以处理这些对象。它工作正常。但有时当页面非常冗长而且我们不知道该对象在页面中间或页面的底部等处的位置是什么样的。在这种情况下,只有页面向下不起作用。有没有什么办法可以让对象在对象属性的基础上可见?这意味着我们可以将对象放在窗口前面。

3 个答案:

答案 0 :(得分:0)

如果您的滚动页面或向下翻页代码已经有效,为什么不使用循环...

Set obj = Browser(..).page(..).Link(..) ' use your object

While obj.getROProperty("visible") = False
    'Scroll code
Wend

答案 1 :(得分:0)

UFT不依赖于对象是否在视图中。如果某个对象滚出视图,UFT会在对其执行任何操作之前自动将其滚动到视图中(例如Click)。

您所描述的行为可能是由于网页在滚动页面时动态地将对象添加到DOM这一事实。如果是这种情况,那么UFT无法知道什么会导致将对象添加到DOM中,并且您必须滚动它们,就像您一直在做的那样。

抱歉,我无法带来更好的消息:(

答案 2 :(得分:0)

我曾经遇到过类似的问题。对我来说,将重播类型设置更改为鼠标事件有效。 尝试在执行任何操作(例如单击对象)之前将ReplayType更改为鼠标事件,如下所示:

Settings.WebPackage("ReplayType") = 2    'Changes to mouse/device events mode
'Perform the Click Operation here
Settings.WebPackage("ReplayType") = 1     'Change back to Browser events mode
  

有关ReplayType的其他信息:

     

此设置允许我们更改鼠标操作的方式   在AUT上发生。它可以是浏览器事件或鼠标事件。   浏览器事件类似于使用Browser方法的DOM事件,   wheras鼠标事件模拟来自的实际用户操作   键盘或鼠标。例如,如果您单击按钮时   ReplayType是Mouse,您会注意到鼠标指针移动到   按钮的位置并触发事件,但是在浏览器事件的情况下   没有。

     

replaytype的值可以是:

     

1 - 事件

     

2 - 鼠标

     

默认情况下,它设置为Event,即