5

我正在使用White自动化 C# WPF UI 的 BDD 测试。

我的前几个测试在我的开发机器(运行 Windows 7)上运行良好。但是,当我尝试在构建服务器(运行 Windows Server 2003 R2 的虚拟机)上运行相同的代码时,它无法正常工作。在这两种情况下,测试都是从命令行运行的,并且测试使用的是 Cuke4Nuke 框架。对于服务器,我通过远程桌面连接访问服务器。

代码如下所示:

var application = Application.Launch("whiteApp.exe");
var initializeOption = InitializeOption.NoCache;
var windowCriteria = SearchCriteria.ByText("whiteApp");
var window = application.GetWindow(criteria, initializeOption);
var criteria = SearchCriteria.ByAutomationId("rightButton");
var button = (Button) window.Get(criteria);
button.click();

问题是按钮单击事件在服务器上运行时不会触发。如果在 White 完成执行后 UI 保持打开状态,则可以单击该按钮(使用鼠标)。有趣的一点是,在运行 click 方法后,按钮确实显示了被单击的证据,如下图所示,在其他按钮的情况下,显示了鼠标悬停效果。

单击之前和之后的按钮

4

4 回答 4

6

我不确定这是否是您的问题,但我注意到 White 在由使用该AnyCPU平台构建并在 64 位系统上运行的应用程序使用时存在一些问题。出于某种原因,只要在这些条件下尝试移动鼠标,它就会自动将鼠标推到屏幕底部而不是请求的位置。这意味着点击命令错过了它被告知点击的按钮。

如果您将自动化应用程序构建为x86应用程序,White 会正确地自动化鼠标。

于 2011-04-13T17:51:02.540 回答
0

正如 Harry 在他的回答中提到的,在 x86 模式下强制自动化应用程序(测试应用程序)确实有效。

然而,真正的问题是由怀特自己制造的。在 White 关于 codeplex 的讨论页面上,Hachima 发布了对 White 源代码的修改,以确保它可以在 x86 和 x64 下工作:http ://white.codeplex.com/discussions/228433

于 2012-07-30T13:39:10.310 回答
0

在我的本地 Windows 7 x64 机器上,它也是如此。

不知道它是否有用,但使用 button.RaiseClickEvent(); 似乎工作正常。我假设这会引发事件而无需单击按钮或 smt。

于 2011-05-10T15:23:08.323 回答
0

我知道这是一个老问题,但前几天我碰到了它,并认为我的回答可能对其他人有用......

我在 64 位 Win7 机器上使用 NUnit 运行 Project White。为了使它对我有用,我必须确保测试在 32 位进程中运行。

我正在使用 TestDriven.Net 插件。它可以选择以 32 位或 64 位运行任何 CPU 测试。

于 2011-08-12T16:18:24.027 回答