qtp - 右键单击QTP中的webelement有哪些不同的方法?

标签 qtp right-click

我必须右键单击网络元素。我尝试了以下方法:

为简化代码,假设 webElem 引用有效的 Browser().Page().WebElement()

1)

Set obj=createobject("mercury.devicereplay")

getX = webElem.GetROProperty("abs_x")
getY = webElem.GetROProperty("abs_y")


'obj.MouseClick getX, getY,RIGHT_MOUSE_BUTTON

上面的代码不工作

2)

webElem.RightClick

此代码也不起作用

3) 以下代码有效:

Setting.WebPackage("ReplayType") = 2

webElem.RightClick

Setting.WebPackage("ReplayType") = 1

我的问题是:

  1. 为什么我必须更改设备重播类型才能使右键单击起作用?哪里,点击方法工作正常。

  2. 为什么通过 Mercury.DeviceReplay 对象,MouseClick 方法不起作用?

  3. 我怎样才能通过 FireEvent 方法做到这一点? (请详细解释 FireEvent 方法,仅供引用:我是 QTP 新手)

  4. 还有哪些其他方法可以做到这一点?

谁能解释一下为什么有些方法有效而有些方法无效。

谢谢, 斯里坦

最佳答案

默认情况下,QTP 使用事件重播 在 Web 元素上运行大部分步骤,这意味着它发送 DOM events到底层 DOM 元素。当一个人与网页交互时,浏览器会生成许多 DOM 事件(例如 mousemove mousedown contextmenu),Web 应用程序可能依赖于任何这些事件以触发所需的行为。 QTP 不知道每个 Web 应用程序将使用哪些事件,因此会重现 QTP 开发人员认为有趣的子集(例如 Click QTP 重播 mousedownmouseupclick。对于 RightClick,某处还有一个 contextmenu 事件(我不记得顺序了)并且没有 点击

您在 #2 中尝试的操作失败的可能原因是应用程序期望的其他事件不是由 QTP 创建的。

当您指定 ReplayType=2(例如 #3)时,您告诉 QTP 的网络包使用设备重放,这意味着它物理上 将鼠标移动到请求的位置并执行操作。这意味着浏览器认为真人正在移动鼠标,并且会重现与人类执行操作时完全相同的事件。

您应该得到与案例 #1 完全相同的结果(显式使用 DeviceReplay)。我能想到它仍然失败的两个原因。

  1. 在您的代码示例中,您注释掉了行 'obj.MouseClick getX, getY,RIGHT_MOUSE_BUTTON,这可能是一个复制/粘贴错误,但如果这也是您尝试运行的内容,它会解释为什么什么都没发生。
  2. 更可能的解释是您正在使用 abs_xabs_y 重播点击,这是 WebElement 的左上角> 也许这没有到达正确的 DOM 元素。 device replay 模式下 RightClick 的方式与您的实现不同的是,它在 WebElement 中间单击(默认情况下)尝试获取元素的宽度和高度并执行:obj.MouseClick getX+(width/2), getY+(height/2), RIGHT_MOUSE_BUTTON

还有另一种执行右键单击的方法,那就是:

webElem.Click micNoCoordinates, micNoCoordinates, micRightBtn

但我建议不要使用它,因为 webElem.RightClick 如果不是更好的话,至少应该也能正常工作。

关于qtp - 右键单击QTP中的webelement有哪些不同的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13815223/

相关文章:

vbscript - QTP 无法创建 ActiveX 对象

registry - 如何从文档中的菜单上下文中删除 git?

python - 如何在Finder中制作“右键单击选项”? (苹果电脑)

jquery - 上下文菜单jQuery在第一次单击时不起作用

image - QTP 如何保存网页中的图像

javascript - 访问驻留在另一个对象中的对象的属性

vbscript - 使用 UFT/QTP 单击 WebTable 中的特定行

javascript - 使用 Chrome 使用 Java 脚本打开 QTP (UFT)

javascript - 如何使用 jquery/javascript 编写自己的右键菜单并禁用默认菜单