TIPS:在系统锁定的情况下处理随时出现的security alert对话框

 在日常运行脚本的过程中,尤其在夜间运行脚本,由于IT Policy的一些问题会导致脚本Fail

主要原因可能大部分是系统自动锁定导致的

由于系统自动锁定,对于出现的security alert对话框,QTP无法把焦点Focus过来,从而导致脚本失败。

解决方法

1.

要求IT针对特定测试机设定单独的组策略,取消定时自动锁定的组策略;

2

但是这类要求在HP是不可能实现的,所以我们做出了第二种办法

使用QTP直接调用Windows API

  1. Sub ClickButton(WinTitle)
  2. 'Author: shao JieMing
  3.   Const WM_COMMAND = 273    
  4.   Extern.Declare micLong, "PostMessage""user32.dll""PostMessageA", micHwnd, micLong, micLong, micLong
  5. buttonCode = 6
  6.     Hwnd = Window("regexpwndtitle:="&WinTitle).GetRoProperty("hwnd")
  7.     lResult = extern.PostMessage(Hwnd, WM_COMMAND, buttonCode, 0)
  8. End Sub

在需要处理这类对话框的地方直接Call这个函数

 

3.

方法2还是有欠缺的地方,就是由于Dev的不断修改,这类Alert对话框可能不断变化出现的位置,从而导致脚本也需要不断跟着修改,所以我们有了方法3-QTP的场景恢复功能

新建QTP Funtional Library

  1. Function ClickButton(Object)
  2.     Const WinTitle = "Security Alert"
  3.     Const WM_COMMAND = 273
  4.     Extern.Declare micLong, "PostMessage""user32.dll""PostMessageA", micHwnd, micLong, micLong, micLong
  5.     buttonCode = 6
  6.     Hwnd2 = Window("regexpwndtitle:="&WinTitle).GetRoProperty("hwnd")
  7.     lResult = extern.PostMessage(Hwnd2, WM_COMMAND, buttonCode, 0)
  8. End Function

Note:注意此处的ClickButton(Object)

然后新建QTP Recovery 场景

1.Tigger选择Pop Up情况

2.用Spy指定Security Alert对话框

3.Recovery指定当前场景调用这个Function

4.Post-recovery选择Repeat当前Step然后继续

加入到当前脚本的环境中.

好处

1)脚本运行中只要出现Security Alert就可以在系统锁定情况下处理掉

2)不需要Update脚本,Team中其他人可以直接指定当前场景就可以应用过来

缺点

目前只是写死了处理Security Alert对话框,其他类似对话框还没有处理,作为后续工作来做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值