发布新日志

  • QTP中对右键单击选择菜单的解决办法

    2009-06-23 16:15:21

    今天写QTP脚本,发现QTP对右键单击选择列表的操作不能识别,经过网上搜索资料,采用WshShell的方式,可以实现右键选择的操作。WshShell是通过模拟键盘,向激活窗口发送键值实现相应操作。

    Window("XX系统").WinObject("对象B").Click 132, 83, micRightBtn  '右键单击出菜单

    Window("XX系统").WinObject("对象B").WinMenu("MenuC").Select "可编辑(E)"  '在弹出菜单中选择功能

    上述代码在回放时过不去, 可以改为:
    Dim WshShell

    Window("XX系统").WinObject("对象B").Click 132, 83, micRightBtn
       
          Set WshShell = CreateObject("WScript.Shell")
          For i=1 to items
              WshShell.SendKeys "{DOWN}"   '模拟键盘操作
          Next
          wait 1
          WshShell.SendKeys "{ENTER}"     '模拟键盘操作
    上述代码在弹出菜单后可以实现向下移动选项,并选择功能, items是移动的次数

    附: WshShell键值表
    键          参数
    退格键      {BACKSPACE}、{BS}或{BKSP}
    BREAK       {BREAK}
    CAPS LOCK   {CAPSLOCK}
    DEL或DELETE{DELETE}或{DEL}
    下箭头      {DOWN}
    END         {END}
    ENTER       {ENTER}或~
    ESC         {ESC}
    HOME        {HOME}
    INS或INSERT{INSERT}或{INS}
    左箭头      {LEFT}
    NUM LOCK    {NUMLOCK}
    PAGE DOWN   {PGDN}
    PAGE UP     {PGUP}
    PRINT SCREEN{PRTSC}
    右箭头      {RIGHT}
    SCROLL LOCK{SCROLLLOCK}
    TAB         {TAB}
    上箭头      {UP}
    F1、F2、F3...{F1}、{F2}、{F3}

    为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:

    键    代码
    SHIFT  +
    CTRL   ^
    ALT    %

    为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 "+(EC)"。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用 "+EC"。

    为了指定重复键,使用 {key number} 的形式。必须在 key 与 number 之间放置一个空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。注意 不能用 SendKeys 将按键消息发送到这样一个应用程序——这个应用程序并没有被设计成在 Microsoft Windows 中运行。

    注意:Sendkeys 也无法将 PRINT SCREEN 按键发送到任何应用程序。

Open Toolbar