我正在学习HP UFT。
最近我遇到了fireevent
,我试图在福利普特的网站上实现它。我试着用firevent("onmouseover")
作为网站主页上的链接Men
。
我使用ChildObjects
查找链接和WebElement (在两个不同的测试中),首先突出显示它,然后使用object.fireevent("onmouseover")
和object.fireevent("OnClick")
。OnClick
正在工作,它显示的链接为选定的链接(即,当我们按选项卡时,包含链接的虚线框),但它没有显示男子部分下的菜单。
我在谷歌上搜了不少。但未能在QTP/UFT中找到FireEvent的确切工作原理。
请帮助我解决上述问题,以及一些关于FireEvent的教程。
编辑:我正在使用IE11进行测试。
发布于 2014-06-17 10:38:46
我找到了解决我的问题的办法,而且效果很好。
Setting.WebPackage("ReplayType") = 2
object.FireEvent "onmouseover"
Setting.WebPackage("ReplayType") = 1
在这种情况下,object
将是:
Browser("name:=Online Shopping.*").Page("name:=Online Shopping.*").Link("innertext:=Men")
我试过了,效果很好。我想我们不需要别的选择了。但我真的不知道,Ctrl+Space并不是在UFT工作。不知道原因。
发布于 2014-06-11 11:34:24
莫蒂已经回答了技术定义,但我将尝试给你一个功能问题的解决方案。
根据我的经验,.FireEvent
通常不像您所期望的那样工作。类似onmouseover
的另一种方法是通过将鼠标实际移动到所需的位置来模拟用户的行为。在我们的框架中,我们有一个小小的扩展函数来完成这个任务,缩小后的版本如下所示:
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上显示“电子”菜单覆盖(显然可以替代您自己的Browser
和Page
定义):
Browser("Flipkart").Page("Main Nav").Link("xpath:=//a[@data-tracking-id='electronics']").MouseOver
在原始版本中,有各种额外的错误处理和自定义报告,因此它告诉您单击了什么,但本质是相同的。它在屏幕上定位对象,计算中心,并将鼠标移到那里。在对一个新显示的子元素调用.Click
之前,您可能需要等待一小段时间之后菜单覆盖才会出现。
发布于 2014-06-11 08:37:31
这实际上取决于您使用的浏览器。
警告:这个答案中提供的信息有一些例外,而且将来也可能发生变化。这个答案是为了给出一个基本的理解,但在不检查特定版本/用例的行为之前,不要依赖于它是否为真。
最初,QTP的FireEvent
应该称为IE的非标准fireEvent
方法。在Firefox和Chrome上,这是使用标准的dispatchEvent
实现的。您应该检查网站希望得到哪些事件。如果将事件模型(标准的DOM级别2和Microsofts)混合在一起,事情就会变得复杂起来,正如在这个博客帖子中所解释的那样。
https://stackoverflow.com/questions/24155771
复制相似问题