2009-09-21 54 views
2

我正在寻找想法来触发使用QTP的飞出菜单的操作。在QTP中测试飞出菜单

我正在测试使用QTP的Web应用程序。该应用程序具有“级联”或分层式弹出式菜单。

例如Options->Preferences

重新编码QTP会识别菜单层次结构上的终点(如“首选项”)。 但是在运行测试时,解雇WebElement("Preferences").Click不起作用。

如果我打电话Link("Options").FireEvent ("onmouseover")它拉下菜单,然后我可以突出显示偏好项目,但即使在拉下菜单后调用点击仍然无法触发菜单操作。

任何想法触发这些菜单项上的点击操作将是有用的。

问候,
Adarsha

回答

2

对于松动而QTP在执行多任务的原因,我没有Motti的suggesiton实现。因此,我终于开始浏览HTML代码,以查看java脚本所期望的鼠标事件。事实证明,我需要调用下面的序列:

Link("Options").FireEvent ("onmouseover") 
WebElement("Preferences").FireEvent ("onmouseover") 
WebElement("Preferences").FireEvent ("onClick") 

这招的作品真的不错,但这里的风险是,如果他们改变任何东西大幅度(instaed说LITENING的,如果他们使用onmousedown事件来点击)我需要调整测试脚本。

+1

您可以考虑使用Web扩展(这样你可以在菜单项参数化)这个菜单中创建自定义的支持。 – Motti 2009-09-27 08:15:15

5

如果Click没有做的工作则有可能是web应用程序期待不受QTP模拟的其他事件。解决方法之一就是打开网页的设备回放模式:

Setting.WebPackage("ReplayType") = 2 

这条线的测试后,每次QTP看到一个Click一步,将通过在元素上移动鼠标和模拟重播点击这样所有人类发射的事件都会被解雇。

要返回到默认事件回放模式下设置"ReplayType"为1

+0

通过设置装置应答模式回复鼠标动作,你将失去QTP时正在执行其他事情上工作的能力。我有双显示器,通常让QTP在辅助显示器上运行,同时处理其他事情。 但它的一个不错的LITTEL伎俩来考虑。 – Adarsha 2009-09-27 02:27:38

+1

您是否尝试过在虚拟机中使用QTP?这种使用设备重放的方式不会盗取你的鼠标。 – Motti 2009-09-28 18:58:17

+0

这是否也意味着,如果按钮不可见的屏幕上,因为它是低于倍(即:你需要滚动才能看到它),QTP会发现它? – Riddari 2010-08-09 01:10:59

0

这是我做过一个类似的问题:

Set desPrefLink = Description.Create 
    desPrefLink("micclass").value = "Link" 
    desPrefLink("innertext").value = "Preferences" 

Browser(X).Page(Y).Link(desPrefLink).Click() 

它可能不是一个更动态JavaScript菜单工作,虽然。

+0

没错。在我的情况下,直到onmouseover事件上选项链接解雇desPrefLink不是QTP可见。 – Adarsha 2010-08-08 21:08:10

1

我还有一个选项。用它来点击任何对象。

Set objMenu = Browser("Browser").Page("Pagel").WebElement("Menu_ELM") 
Set objDeviceReplay1 = CreateObject("mercury.devicereplay") 
x = objMenu.GetROProperty("abs_x") 
y = objMenu.GetROProperty("abs_y") 
objDeviceReplay1.MouseClick x + 35 , y + 5,0 
Set objDeviceReplay1 = Nothing 
+0

请在发布回复时尝试格式化代码。这并不难。同样,如果你看看Motti的答案,他已经建议设备重播模式。这有它自己的问题,一个是它会在脚本运行时偷走鼠标,另一个是它非常基本的做事方式,因为你正在回应对象的物理坐标。 – Adarsha 2010-12-30 17:52:30

0

我有稍微不同的方式处理类似的情况,第一次点击父链接Options上,然后触发fireevent onclick与序标识符

eg: browser().page().link(options).click

browser().page().link("name:=preferences","html tag:=A","index:=X").firevent "onclick"

的帮助这将非常加载所需的父链接&会在点击 - 希望这有助于引发火灾事件很有帮助。