白色UIAutomation click()停止在其他平台上工作

| 我正在使用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方法后,按钮确实显示出被单击的迹象,如下图所示,在其他按钮的情况下,则显示了鼠标悬停效果。     
已邀请:
我不确定这是否是您的问题,但是我已经注意到,当使用
AnyCPU
平台构建并在64位系统上运行的应用程序使用White时,White会遇到一些问题。由于某种原因,在这种情况下,只要它尝试移动鼠标,它就会自动将鼠标推到屏幕底部,而不是请求的位置。这意味着单击命令会丢失被告知要单击的按钮。 如果将自动化应用程序构建为
x86
应用程序,则White会正确地使鼠标自动化。     
在我的本地Windows 7 x64计算机上,它执行相同的操作。 不知道它是否有用,而是使用button.RaiseClickEvent();。似乎还可以。我认为这会引发事件,而无需单击按钮或smt。     
我知道这是一个老问题,但是前几天我碰到了这个问题,并认为我的回答可能对其他人有用... 我正在64位Win7机器上运行带有NUnit的Project White。为了使其对我有用,我必须确保测试在32位进程中运行。 我正在使用TestDriven.Net插件。它可以选择以32位或64位运行任何CPU测试。     
正如Harry在回答中提到的那样,在x86模式下强制自动化应用程序(测试应用程序)确实可以工作。 但是,真正的问题是由怀特本身造成的。在White关于Codeplex的讨论页面上,Hachima发布了White的源代码的修改版,以确保它可以在x86和x64上运行:http://white.codeplex.com/discussions/228433     

要回复问题请先登录注册