2011-04-12 23 views
5

我使用White来自动化我们的C#WPF UI的BDD测试。White UIAutomation click()停止在不同的平台上工作

我的第一对测试在我的开发机器上运行良好(运行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仍处于打开状态,可以单击该按钮(使用鼠标)。一个有趣的地方是,点击方法运行后,按钮确实显示被点击的证据,如下图所示,在其他按钮的情况下,会显示鼠标悬停效果。

Button before and after click

回答

6

我不知道,如果这是你的问题或没有,但我注意到,白色有一些问题,当它被用来通过使用AnyCPU平台和运行构建的应用程序上的64位系统。出于某种原因,只要它在这些条件下尝试移动鼠标,它就会自动将鼠标推到屏幕的底部而不是请求的位置。这意味着点击命令会错过点击它的按钮。

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

+0

非常感谢,尽管如此,这并不适用于我。我将它作为x86在Server 2003 R2虚拟机上编译并运行,但无济于事。不管怎么说,还是要谢谢你。 – Klee 2011-04-14 22:57:04

+1

有完全相同的问题,并切换到32位解决它。你确定你为x86构建了_tests_(不是实际的应用程序)吗? – 2011-12-12 10:34:52

+0

我可以确认为x86构建自动化应用程序/测试应用程序对我来说有诀窍。谢谢! – 2012-07-30 13:11:37

0

在我本地的Windows 7 x64机器上它也是这样。

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

0

我知道这是一个老问题,但我碰到了它的一天,想我的答案可能是有用的人......

我在一个64位的Win7运行Project白与NUnit的机。为了使它适用于我,我必须确保测试是在32位过程中运行的。

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

+1

如果你看看我的答案的评论,@Klee试图构建他的测试应用程序为x86(一个32位应用程序),并没有解决问题。 – 2011-08-13 14:13:25

0

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

但是,真正的问题是由白本身造成的。在白色关于codeplex的讨论页面上,Hachima发布了对White源代码的修改,以确保它可以在x86和x64下工作:http://white.codeplex.com/discussions/228433