是否可以在 UFT 上以编程方式禁用 "Display hidden-mode notification tooltip"?

Is it possible to disable "Display hidden-mode notification tooltip" programmatically on UFT?

我正在尝试 运行 我的应用程序中的一些自动化测试,但 UFT 隐藏模式通知工具提示出现在屏幕中的对象前面,阻止我的测试 运行。
我知道我可以取消选中 Remote Agent 设置中的选项 "Display hidden-mode notification tooltip" 来解决这个问题,并且在我这样做之后它在我的机器上工作正常,但是这些测试是由我公司的其他用户在其他机器上执行的,告诉他们每个人更改他们机器上的此设置将是一项真正的努力。
是否可以通过编程方式禁用此复选框?

编辑:
以下是有关这对我的影响的更多详细信息:
我正在测试一个 Web 应用程序,在我的一些测试用例中,我需要从该应用程序下载一个文件。我通过单击浏览器底部通知栏上显示的上下文菜单中的 "Save As" 来完成此操作。 以下是执行此类操作的代码部分:

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 通知 的其他机器上,它与菜单重叠,我的脚本无法select "Save As" 选项。因此,如果无法在 运行 时间以编程方式关闭此通知,是否有任何替代解决方案来单击 "Save As" 按钮,即使此通知与它重叠?

你能不能用下面的方法激活你想要的浏览器,然后试试另存为

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

我设法识别 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

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

当下载栏出现时,您可以先发送ALT+N以将焦点设置在下载栏上,然后在Save上向select发送一些Tab键,以及一些[=13] =] select SaveAs.

这样一来,您就不需要费心去处理 UFT 通知了...

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

创建 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 运行 测试时重新启动它(如上所述,将读取工具提示的新值)

编辑:

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

  1. mic.ini
  2. RemoteAgentGUISettings.xml

但真正使更改生效的是 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"

这次我确保它有效 ;)