对于UI黑盒子测试,我需要验证某个UI交互,这会导致通过Process.Start("Some Folder");
打开某个目录
代码的实现已经过单元测试。在执行单元测试时,我嘲笑并验证了对此的调用,但UI完全集成,我需要验证绑定是否正确设置(它们依赖于CommandParameter)。缺少绑定会导致控制台出现错误40,但只在运行时检测到缺少参数或错误参数的命令。
Well Process Explorer向我展示了explorer.exe打开的句柄列表,它们都被标记为File,还有大量带有句柄的文件和目录,这些文件和目录没有直接显示为任务栏中的打开目录窗户。
答案 0 :(得分:0)
好。解决方案非常微不足道,让我感到震惊。 我尝试了各种各样的东西,比如使用WinApi钩子挂钩到explorer.exe和ShellExecute WinApi调用以及托管包装器。然后我想到了截图分析:/
因为我正在使用White进行WPF UI测试,它本身非常依赖于微软强大的UIAutomation框架,而UIAutomation几乎可以通过自动化找到我需要的所有内容:
var desktop = AutomationElement.RootElement;
foreach (AutomationElement element in desktop.FindAll(TreeScope.Children, Condition.TrueCondition))
{
if (element.Current.ClassName != "CabinetWClass")
{
continue;
}
Console.WriteLine("{0}, {1}",element.Current.Name, element.Current.ClassName);
}
不要忘记添加UIAutomationClient和UIAutomationTypes程序集以及using System.Windows.Automation;