使用 UI 自动化选择下拉菜单不会使下拉菜单保持展开状态
Selecting drop down using UI Automation does not keep drop down expanded
我正在尝试 select 下拉菜单,以便我可以 select 使用 Microsoft UI 自动化的快递服务。
下面是我正在使用的代码
public void SelectCourierService(string courierService)
{
Console.WriteLine(@"SelectCourierService(" + courierService + @")");
var expandCollapsePattern = (ExpandCollapsePattern)_courierServiceCombo.GetCurrentPattern(ExpandCollapsePatternIdentifiers.Pattern);
expandCollapsePattern.Expand();
expandCollapsePattern.Collapse();
var listItem = _courierServiceCombo.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.NameProperty, courierService));
listItem = AutomationElementHelper.GetSubtree(_courierServiceCombo, courierService);
object selectionItemPattern;
if (listItem.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectionItemPattern))
{
var selectPattern = (SelectionItemPattern)selectionItemPattern;
selectPattern.Select();
}
Thread.Sleep(100);
}
但是当它到达以下代码时:-
expandCollapsePattern.Expand();
UI 下拉菜单向下展开但随后又向上折叠,这意味着我无法 select 下拉列表中的项目。
我想知道是否有人遇到过同样的问题,他们是如何解决这个问题的。
谢谢
我的一个同事找到了这个解决方案的答案,我把它放在下面,这对我有用:-
public static void SelectDropdownItem(AutomationElement dropdownBox, string itemToSelect, bool navigateToParent = true)
{
var expandCollapsePattern = (ExpandCollapsePattern)dropdownBox.GetCurrentPattern(ExpandCollapsePatternIdentifiers.Pattern);
expandCollapsePattern.Expand();
expandCollapsePattern.Collapse();
var listItem = dropdownBox.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.NameProperty, itemToSelect));
if (navigateToParent)
{
var controlViewWalker = TreeWalker.ControlViewWalker;
listItem = controlViewWalker.GetParent(listItem);
}
object selectionItemPattern;
if (listItem.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectionItemPattern))
{
var selectPattern = (SelectionItemPattern)selectionItemPattern;
selectPattern.Select();
}
}
我正在尝试 select 下拉菜单,以便我可以 select 使用 Microsoft UI 自动化的快递服务。
下面是我正在使用的代码
public void SelectCourierService(string courierService)
{
Console.WriteLine(@"SelectCourierService(" + courierService + @")");
var expandCollapsePattern = (ExpandCollapsePattern)_courierServiceCombo.GetCurrentPattern(ExpandCollapsePatternIdentifiers.Pattern);
expandCollapsePattern.Expand();
expandCollapsePattern.Collapse();
var listItem = _courierServiceCombo.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.NameProperty, courierService));
listItem = AutomationElementHelper.GetSubtree(_courierServiceCombo, courierService);
object selectionItemPattern;
if (listItem.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectionItemPattern))
{
var selectPattern = (SelectionItemPattern)selectionItemPattern;
selectPattern.Select();
}
Thread.Sleep(100);
}
但是当它到达以下代码时:- expandCollapsePattern.Expand();
UI 下拉菜单向下展开但随后又向上折叠,这意味着我无法 select 下拉列表中的项目。
我想知道是否有人遇到过同样的问题,他们是如何解决这个问题的。
谢谢
我的一个同事找到了这个解决方案的答案,我把它放在下面,这对我有用:-
public static void SelectDropdownItem(AutomationElement dropdownBox, string itemToSelect, bool navigateToParent = true)
{
var expandCollapsePattern = (ExpandCollapsePattern)dropdownBox.GetCurrentPattern(ExpandCollapsePatternIdentifiers.Pattern);
expandCollapsePattern.Expand();
expandCollapsePattern.Collapse();
var listItem = dropdownBox.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.NameProperty, itemToSelect));
if (navigateToParent)
{
var controlViewWalker = TreeWalker.ControlViewWalker;
listItem = controlViewWalker.GetParent(listItem);
}
object selectionItemPattern;
if (listItem.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectionItemPattern))
{
var selectPattern = (SelectionItemPattern)selectionItemPattern;
selectPattern.Select();
}
}