我正在寻找使用QTP触发弹出菜单操作的想法。
我正在使用QTP测试Web应用程序。该应用程序具有“级联”或分层飞出菜单。
e.g。 Options->Preferences
重新编码QTP时识别菜单层次结构上的结束点(例如“首选项”)。
但是在运行测试时,触发WebElement("Preferences").Click
不起作用。
如果我拨打Link("Options").FireEvent ("onmouseover")
它会拉下菜单,之后我可以突出显示“偏好设置”项目,但是在拉下菜单后调用点击仍无法触发菜单操作。
任何触发这些菜单项上的点击操作的想法都会很有用。
的问候,
Adarsha
答案 0 :(得分:5)
如果Click
没有完成这项工作,那么Web应用程序可能还有其他未被QTP模拟的事件。解决此问题的一种方法是打开Web的设备重播模式:
Setting.WebPackage("ReplayType") = 2
在QTP看到Click
步骤后,在测试中的这一行之后,它将通过将鼠标移动到元素上并模拟点击来重放它,以便触发人类触发的所有事件。
要返回默认事件重播模式,请将"ReplayType"
设置为1。
答案 1 :(得分:2)
由于在QTP执行期间失去多任务处理的原因,我没有实施Motti的建议。因此,我最终通过HTML代码查看java脚本所期望的鼠标事件。事实证明我需要调用以下序列:
Link("Options").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onClick")
这个技巧非常好用,但这里的风险是如果他们彻底改变任何事情(如果他们使用onMouseDown就说明点亮了点击)我需要调整测试脚本。
答案 2 :(得分: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
答案 3 :(得分:0)
以下是我对类似问题所做的事情:
Set desPrefLink = Description.Create
desPrefLink("micclass").value = "Link"
desPrefLink("innertext").value = "Preferences"
Browser(X).Page(Y).Link(desPrefLink).Click()
但它可能不适用于更动态的Javascript菜单。
答案 4 :(得分:0)
我的处理方式略有不同,首先点击父链接Options
,然后在序号标识符的帮助下触发fireevent onclick
eg: browser().page().link(options).click
browser().page().link("name:=preferences","html tag:=A","index:=X").firevent "onclick"
这将理想地加载预期的父链接&将有助于触发点击火灾事件 - 希望这会有所帮助。