Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 白色UIAutomation click()停止在不同平台上工作_C#_Wpf_Bdd_Ui Automation_White Framework - Fatal编程技术网

C# 白色UIAutomation click()停止在不同平台上工作

C# 白色UIAutomation click()停止在不同平台上工作,c#,wpf,bdd,ui-automation,white-framework,C#,Wpf,Bdd,Ui Automation,White Framework,我用它来自动化我们的C#WPF UI的BDD测试 我的前两个测试在我的开发机器(运行Windows7)上运行良好。但是,当我尝试在生成服务器(运行WindowsServer2003R2的虚拟机)上运行相同的代码时,它无法正常工作。在这两种情况下,测试都是从命令行运行的,测试使用的是Cuke4Nuke框架。对于服务器,我通过远程桌面连接访问服务器 代码如下所示: var application = Application.Launch("whiteApp.exe"); var initialize

我用它来自动化我们的C#WPF UI的BDD测试

我的前两个测试在我的开发机器(运行Windows7)上运行良好。但是,当我尝试在生成服务器(运行WindowsServer2003R2的虚拟机)上运行相同的代码时,它无法正常工作。在这两种情况下,测试都是从命令行运行的,测试使用的是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方法运行后,按钮确实显示被单击的迹象,如下图所示,对于其他按钮,则显示鼠标悬停效果


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


如果将自动化应用程序构建为
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下工作:

非常感谢,但这对我来说不起作用。我在Server2003R2虚拟机上以x86的形式编译了它,但没有运行它。无论如何谢谢。有完全相同的问题,切换到32位解决了它。您确定为x86构建了测试(而不是实际的应用程序)吗?我可以确认为x86构建自动化应用程序/测试应用程序为我做到了这一点。谢谢如果你看一下对我答案的评论,@Klee尝试将他的测试应用程序构建为x86(32位应用程序),但没有解决问题。