通过测试代理关闭警告框在 VDI 上不起作用

Closing an alert box does not work on VDI via test agent

当我们运行一个带有以下代码的CodedUI测试用例关闭对话框弹出窗口(JavaScript警报)时:

CurrentBrowser.PerformDialogAction(BrowserDialogAction.Ok);

或者,使用以下代码:

var popupWindow = new WinWindow(null);
popupWindow.SearchProperties.Add("Name", "Message from webpage", "ClassName", "#32770");
popupWindow.TechnologyName = "MSAA";

var okButton = new WinButton(popupWindow) { TechnologyName = "MSAA" };
okButton.SearchProperties.Add("Name", "OK");

okButton.SetFocus();
Keyboard.SendKeys(okButton, "{ENTER}");

它在本地工作,但是当我们 运行 在具有相同版本 Windows 和 Internet Explorer 的 VDI 上通过 Microsoft 测试管理器时,弹出窗口不会关闭。没有抛出错误,VDI 只是等待。

我们正在使用以下版本:

TFS 2012 update 4 test agent
Internet Explorer 10
Windows 7 Enterprise

有谁知道为什么会这样以及如何解决?

通常,您想在 window 而不是按钮上使用 SetFocus。 DrawHighlight 在做什么?您是否从 Window 中删除了 ClassName 搜索 属性?

原来我本地用的是Visual Studio2015到运行。构建和 ​​MTM 使用 TFS 2012。CodedUI dll 不匹配。显然,CodedUi 中修复了一些问题,使得点击警告框成为可能。

删除(旧)dll 的条件选择:

<Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
  <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
</When>

从 csproj 文件中引用较新的版本解决了这个问题。