是否可以禁用"显示隐藏模式通知工具提示"以编程方式在UFT上?

时间:2016-05-19 12:03:53

标签: vbscript qtp hp-uft alm

我试图在我的应用程序中运行一些自动化测试,但是UFT隐藏模式通知工具提示位于屏幕中的对象前面,阻止我的测试运行。
我知道我可以取消选中"显示隐藏模式通知工具提示"在远程代理设置中解决此问题,并且在我执行此操作后它在我的计算机上正常工作,但这些测试在我公司的其他用户的其他计算机上执行,并且真正努力告诉他们每个人在他们的机器上更改此设置。
这是一种禁用此程序复选框的方法吗?

修改
以下是关于这对我影响的更多细节:
我正在测试Web应用程序,在我的一些测试用例中,我需要从此应用程序下载文件。我点击"另存为"在上下文菜单中,该菜单显示在浏览器底部的通知栏上。 以下是执行此类操作的代码部分:

Dim brwBottom
Set brwBottom = Browser("brw_Bottom_Save_As")

If brwBottom.WinObject("wo_Notification").WinButton("wb_Selector").Exist Then
    brwBottom.WinObject("wo_Notification").WinButton("wb_Selector").Click
    brwBottom.WinMenu("wm_Selector").Select "Save As"
End If

这在我的机器上工作正常,因为没有显示UFT通知,但在显示UFT通知 的其他机器中,它与菜单重叠,我的脚本无法选择&#34 ;另存为"选项。因此,如果无法在运行时以编程方式关闭此通知,是否有任何替代解决方案可以单击"另存为"按钮,即使这个通知重叠了吗?

4 个答案:

答案 0 :(得分:2)

我设法识别UFT通知工具提示并关闭它。有了这个,我需要点击按钮前面没有更多的对象,我的脚本可以成功执行。 以下是使用的代码。我并没有将此标记为可接受的答案,因为我仍在等待我的团队接受解决方案,但这是有效的。

Dim brwBottom
Set brwBottom = Browser("brw_Bottom_Save_As")

' To close UFT Notification Tooltip, if exists
If Window("regexpwndtitle:=NotificationWindow").Exist(2) Then
    If InStr(Window("regexpwndtitle:=NotificationWindow").GetROProperty("nativeclass"),"UFTRemoteAgent") > 0 Then
        Window("regexpwndtitle:=NotificationWindow").Close
    End If
End If

If brwBottom.WinObject("wo_Notification").WinButton("wb_Selector").Exist Then
    brwBottom.WinObject("wo_Notification").WinButton("wb_Selector").Click
    brwBottom.WinMenu("wm_Selector").Select "Save As"
End If

答案 1 :(得分:1)

我完全理解你的痛苦,因为我的项目还需要与IE下载栏进行交互。通常,我使用SendKeys来处理不同项目中的下载活动。

当下载栏出现时,您可以首先发送ALT+N以设置对下载栏的关注,然后发送一些标签键以选择Save,并选择一些Down Arrow键以选择{ {1}}。

通过这种方式,您不需要费心处理UFT通知......

示例SaveAs代码可以很容易地用Google搜索。

答案 2 :(得分:1)

创建UFT GUI测试并包含以下三行:

extern.Declare micLong, "WritePrivateProfileString", "kernel32.dll", "WritePrivateProfileString", micString, micString, micString, micString
extern.WritePrivateProfileString "RemoteAgent", "ShowBallon", "0", Environment("ProductDir") + "\bin\mic.ini"
systemutil.CloseProcessByName "UFTRemoteAgent.exe"

从ALM,在所有UFT计算机上运行它。

备注:

  1. 这会将控制此类工具提示的标志切换为关闭,因此下次Remote Agent启动时会读取它并且不再显示工具提示。
  2. 第三行将终止UFT的远程代理进行GUI测试,该代理负责UFT和ALM客户端之间的通信,这将导致ALM的自动运行器出错(RPC服务器不可用)...只是忽略它。我们需要杀死它,以便下次我们尝试从ALM运行测试时重新启动它(如上所述,将读取工具提示的新值)
  3. 修改

    我刚发现一些有趣的东西:这个标志实际上保存在两个位置:

    1. mic.ini
    2. RemoteAgentGUISettings.xml
    3. 但实际使更改生效的是RemoteAgentGUISettings.xml(似乎他们正在从.ini文件切换到.xml ......这很有意义)。在这种情况下,代码会稍微改变一下,但想法是一样的:

      filePath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%appdata%") + "\Hewlett-Packard\UFT\Persistence\Dialogs\RemoteAgentGUISettings.xml"
      Set xmlDoc = CreateObject("Microsoft.XMLDOM")
      xmlDoc.load filePath
      Set nNode = xmlDoc.selectsinglenode ("//SettingsViewModel/IsShowBalloon")
      nNode.text = "false"
      strResult = xmldoc.save(filePath)
      systemutil.CloseProcessByName "UFTRemoteAgent.exe"
      

      这次我确定它有效;)

答案 3 :(得分:0)

是否可以使用以下选项激活所需的浏览器,然后尝试另存为

hwnd = Browser("title:=.*").GetROProperty("hwnd")
Window("hwnd:=" & hwnd).Activate