首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在HP QTP / UFT中,fireevent()的功能是什么?

在HP QTP / UFT中,fireevent()的功能是什么?
EN

Stack Overflow用户
提问于 2014-06-11 06:12:44
回答 3查看 22.2K关注 0票数 3

我正在学习HP UFT。

最近我遇到了fireevent,我试图在福利普特的网站上实现它。我试着用firevent("onmouseover")作为网站主页上的链接Men

我使用ChildObjects查找链接和WebElement (在两个不同的测试中),首先突出显示它,然后使用object.fireevent("onmouseover")object.fireevent("OnClick")OnClick正在工作,它显示的链接为选定的链接(即,当我们按选项卡时,包含链接的虚线框),但它没有显示男子部分下的菜单。

我在谷歌上搜了不少。但未能在QTP/UFT中找到FireEvent的确切工作原理。

请帮助我解决上述问题,以及一些关于FireEvent的教程。

编辑:我正在使用IE11进行测试。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-17 10:38:46

我找到了解决我的问题的办法,而且效果很好。

代码语言:javascript
运行
复制
Setting.WebPackage("ReplayType") = 2
object.FireEvent "onmouseover"
Setting.WebPackage("ReplayType") = 1

在这种情况下,object将是:

代码语言:javascript
运行
复制
Browser("name:=Online Shopping.*").Page("name:=Online Shopping.*").Link("innertext:=Men")

我试过了,效果很好。我想我们不需要别的选择了。但我真的不知道,Ctrl+Space并不是在UFT工作。不知道原因。

票数 3
EN

Stack Overflow用户

发布于 2014-06-11 11:34:24

莫蒂已经回答了技术定义,但我将尝试给你一个功能问题的解决方案。

根据我的经验,.FireEvent通常不像您所期望的那样工作。类似onmouseover的另一种方法是通过将鼠标实际移动到所需的位置来模拟用户的行为。在我们的框架中,我们有一个小小的扩展函数来完成这个任务,缩小后的版本如下所示:

代码语言:javascript
运行
复制
Sub My_MouseOver(objSender)
    Dim absX : absX = objSender.GetROProperty("abs_x")
    Dim absY : absY = objSender.GetROProperty("abs_y")
    Dim width : width = objSender.GetROProperty("width")
    Dim height : height = objSender.GetROProperty("height")
    Dim x : x = (absX + (width / 2))
    Dim y : y = (absY + (height / 2))
    Dim deviceReplay : Set deviceReplay = CreateObject("Mercury.DeviceReplay")
    deviceReplay.MouseMove x, y

    Reporter.ReportEvent micDone, "A step name", "A useful step description"
End Sub
RegisterUserFunc "Link", "MouseOver", "My_MouseOver"
RegisterUserFunc "WebButton", "MouseOver", "My_MouseOver"
RegisterUserFunc "WebElement", "MouseOver", "My_MouseOver"

例如,您可以按照以下步骤在flipkart.com上显示“电子”菜单覆盖(显然可以替代您自己的BrowserPage定义):

代码语言:javascript
运行
复制
Browser("Flipkart").Page("Main Nav").Link("xpath:=//a[@data-tracking-id='electronics']").MouseOver

在原始版本中,有各种额外的错误处理和自定义报告,因此它告诉您单击了什么,但本质是相同的。它在屏幕上定位对象,计算中心,并将鼠标移到那里。在对一个新显示的子元素调用.Click之前,您可能需要等待一小段时间之后菜单覆盖才会出现。

票数 4
EN

Stack Overflow用户

发布于 2014-06-11 08:37:31

这实际上取决于您使用的浏览器。

警告:这个答案中提供的信息有一些例外,而且将来也可能发生变化。这个答案是为了给出一个基本的理解,但在不检查特定版本/用例的行为之前,不要依赖于它是否为真。

最初,QTP的FireEvent应该称为IE的非标准fireEvent方法。在Firefox和Chrome上,这是使用标准的dispatchEvent实现的。您应该检查网站希望得到哪些事件。如果将事件模型(标准的DOM级别2和Microsofts)混合在一起,事情就会变得复杂起来,正如在这个博客帖子中所解释的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24155771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档