我正在尝试使用White框架来测试WPF .NET4应用程序。 XAML有一个声明为
的超链接<Hyperlink Command="{Binding Path=CmdOpenFile}" Name="hlOpenFile" >
<TextBlock Text="Load file.." Name="txtLoadFileLabel" />
</Hyperlink>
CmdOpenFile创建并显示OpenFileDialog。当我手动测试应用程序时,它按预期工作。 我已经使用White编写了一个单元测试,它获得了与此超链接对应的AutomationElement,然后它尝试单击此链接:
AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile"));
Hyperlink openFileLink = new Hyperlink(automationElement, window.ActionListener);
openFileLink.Click();
当我运行此测试时 - 应用程序启动,鼠标指针移动到此超链接,并且全部 - 未显示打开文件对话框。这可能是什么原因以及如何解决?
答案 0 :(得分:1)
看起来我找到了一些解决方案 - 不确定它是最好的解决方案,但它确实有效:
AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile"));
var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
invokePattern.Invoke();
PS:
上面的解决方案让我更进了一步,但后来我遇到了一个阻止程序,代码执行在打开对话框时停止了。即使它是在一个单独的线程中完成 - 然后它会在尝试找到此对话框时停止,直到手动关闭对话框。 在this问题的帮助下,我终于找到了问题所在。我正在使用Win7x64,应用程序是为x86构建的,但是测试了AnyCPU。将测试目标更改为x86并从x86 nunit控制台运行它使测试执行按预期工作。