0

我正在尝试使用 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();

当我运行此测试时 - 应用程序启动,鼠标指针移动到此超链接,仅此而已 - 打开文件对话框不会出现。这可能是什么原因以及如何解决?

4

1 回答 1

2

看起来我找到了一些解决方案 - 不确定它是否是最好的,但它有效:

AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile"));
var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
invokePattern.Invoke();

PS:

上述解决方案只是让我更进一步,但后来我遇到了一个阻止程序,即代码执行在打开对话框时停止。即使它是在单独的线程中完成的 - 然后它会在尝试找到此对话框时停止,直到手动关闭对话框。在这个问题的帮助下,我终于找到了问题所在。我使用的是 Win7x64,应用程序是为 x86 构建的,但测试的是 AnyCPU。将测试目标更改为 x86 并从 x86 nunit 控制台运行它可以使测试执行按预期工作。

于 2012-10-04T20:09:44.353 回答