【发布时间】:2010-07-02 20:00:51
【问题描述】:
我们有一个旧的旧应用程序需要自动化。 它使用 MDI 窗口。
我们正在使用UIAutomation,我可以成功地为每个 MDI 子窗口获取适当的 AutomationElement。 我不能做的是让那个元素成为焦点。
这是我尝试过的一些示例代码,但失败了:
var desktop = AutomationElement.RootElement;
var dolphin = desktop.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Dolphin for Windows",
PropertyConditionFlags.IgnoreCase));
dolphin.SetFocus();
var workspace = dolphin.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Workspace",
PropertyConditionFlags.None));
var childWindow = workspace.FindFirst(TreeScope.Children, new
PropertyCondition(AutomationElement.NameProperty, "Sharp "));
childWindow.SetFocus();
此代码的最后一行因 System.InvalidOperationException 而失败
实验中,我尝试在 childWindow 上找到一个控件,并在其上调用 SetFocus。它确实正确地将焦点设置在正确的控件上,但它没有将 MDI 窗口带到前台。
有什么想法吗?
【问题讨论】:
标签: c# ui-automation