我正在开发一个项目,使用弹出窗口在编辑器中为用户提供ListBox中的对象,以便他们可以双击将其添加到文档中。我正在尝试使用Microsoft提供的Automation API创建应用程序的自动化测试,但我无法找到WPF Popup的AutomationElement,因为它位于与我的编辑器及其控件不同的树中。有谁知道如何获取WPF Popup的AutomationElement吗?
我正在开发一个项目,使用弹出窗口在编辑器中为用户提供ListBox中的对象,以便他们可以双击将其添加到文档中。我正在尝试使用Microsoft提供的Automation API创建应用程序的自动化测试,但我无法找到WPF Popup的AutomationElement,因为它位于与我的编辑器及其控件不同的树中。有谁知道如何获取WPF Popup的AutomationElement吗?
我最终不得不从桌面开始,并使用一些非常具体的PropertyConditions与AndCondition结合,使用TreeScope.Descendants作为我的查询参数来查询自动化树。
我从主窗口的子元素中获取了弹出窗口的自动化元素(在我的情况下是OpenFileDialog
):
// I had automationElement for main window in advance
AutomationElement mainWindow = ...
// Some condition to distinguish your popup from others
// if you may have more than one popup.
// Otherwise this condition might check ControlType == Window
Condition popupCondition = ...
var popup = mainWindow.FindFirst(TreeScope.Children, popupCondition);