代码之家  ›  专栏  ›  技术社区  ›  Adarsha

测试qtp中的弹出菜单

qtp
  •  2
  • Adarsha  · 技术社区  · 17 年前

    我正在寻找使用qtp触发弹出菜单操作的方法。

    我正在使用qtp测试一个web应用程序。应用程序具有“层叠”或分层弹出菜单。

    例如 Options->Preferences

    当重新编码qtp时,可以识别菜单层次结构上的端点(称为“首选项”)。 但在运行测试时,启动 WebElement("Preferences").Click 不起作用。

    如果我打电话 Link("Options").FireEvent ("onmouseover") 它会下拉菜单,然后我可以突出显示“首选项”项,但即使在下拉菜单之后调用“单击”,也无法触发菜单操作。

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

    当做,
    阿达莎

    5 回复  |  直到 10 年前
        1
  •  5
  •   Motti    17 年前

    如果 Click 不做这项工作,那么可能还有其他一些事件是Web应用程序所期望的,而不是由qtp模拟的。解决此问题的一种方法是打开Web 设备重放 模式:

    Setting.WebPackage("ReplayType") = 2 
    

    当qtp看到 点击 步骤它将通过将鼠标移动到元素上并模拟单击来重放它,这样所有由人类触发的事件都将被触发。

    返回默认事件重播模式集 "ReplayType" 到1。

        2
  •  2
  •   Motti    16 年前

    由于QTP正在执行多任务处理的原因,我没有用Motti的提示来实现。因此,我最终通过HTML代码查看Java脚本所期望的鼠标事件。结果我需要调用以下序列:

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

    这个技巧真的很好用,但是这里的风险是,如果它们彻底改变了任何东西(比如说,instaed of litening to click if they use onmousedown),我需要调整测试脚本。

        3
  •  1
  •   Motti    15 年前

    我还有一个选择。使用此按钮单击任何对象。

    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
    
        4
  •  0
  •   Riddari    16 年前

    下面是我处理类似问题的方法:

    Set desPrefLink = Description.Create
        desPrefLink("micclass").value = "Link"
        desPrefLink("innertext").value = "Preferences"
    
    Browser(X).Page(Y).Link(desPrefLink).Click()
    

    不过,它可能无法与更动态的javascript菜单配合使用。

        5
  •  0
  •   nandesh kalyankar    10 年前

    我处理类似情况的方式略有不同,首先单击父链接 Options 然后触发FireEvent onclick 借助顺序标识符

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

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

    理想情况下,这将加载预期的父链接&将有助于触发单击时的火灾事件-希望这有帮助。