0

当我们使用以下代码运行 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 更新 4 测试代理
Internet Explorer 10
Windows 7 Enterprise

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

4

2 回答 2

1

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

于 2015-10-06T16:03:16.283 回答
0

原来我在本地使用Visual Studio 2015 运行。构建和 ​​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 文件并引用较新版本解决了该问题。

于 2015-12-17T08:36:53.060 回答