Windows UI 组合框的自动化 select 项
Windows UI Automation select item of combobox
我正在尝试 select 使用 Windows UI 自动化 API.
基于其价值的项目
我有一个 class ComboBox
继承自 UIAutomation.Element
.
此外,我在这个组合框元素上有一个方法,应该可以用 string
到 select 匹配的组合框项目
调用
我试过以下方法:
public void SetSelectedItem(string itemName, ITimeout timeout = null)
{
var comboboxItem = this.GetSelf(timeout).FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));
var expandCollapsePattern = (ExpandCollapsePattern)this.GetSelf(timeout).GetCurrentPattern(ExpandCollapsePattern.Pattern);
expandCollapsePattern.Expand();
var itemToSelect = ?????
var selectItemPattern = (SelectionItemPattern)itemToSelect.GetCurrentPattern(SelectionItemPattern.Pattern);
selectItemPattern.Select();
}
但我真的不知道如何在 var itemToSelect = ?????
行检索正确的项目。
变量 comboboxItem
的类型是 AutomationElementCollection
但不幸的是,Linq 似乎不能使用这种类型...
你知道如何检索正确的项目吗?
还是我做错了什么?
提前致谢
在@TnTinMn 的提示下找到了答案,谢谢! :-)
public void SetSelectedItem(string itemName, ITimeout timeout = null)
{
this.GetSelf(timeout).Expand();
var list = this.GetSelf(timeout).FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List), timeout);
var listItem = list.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, itemName), timeout);
listItem.Select();
}
我正在尝试 select 使用 Windows UI 自动化 API.
基于其价值的项目我有一个 class ComboBox
继承自 UIAutomation.Element
.
此外,我在这个组合框元素上有一个方法,应该可以用 string
到 select 匹配的组合框项目
我试过以下方法:
public void SetSelectedItem(string itemName, ITimeout timeout = null)
{
var comboboxItem = this.GetSelf(timeout).FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));
var expandCollapsePattern = (ExpandCollapsePattern)this.GetSelf(timeout).GetCurrentPattern(ExpandCollapsePattern.Pattern);
expandCollapsePattern.Expand();
var itemToSelect = ?????
var selectItemPattern = (SelectionItemPattern)itemToSelect.GetCurrentPattern(SelectionItemPattern.Pattern);
selectItemPattern.Select();
}
但我真的不知道如何在 var itemToSelect = ?????
行检索正确的项目。
变量 comboboxItem
的类型是 AutomationElementCollection
但不幸的是,Linq 似乎不能使用这种类型...
你知道如何检索正确的项目吗?
还是我做错了什么?
提前致谢
在@TnTinMn 的提示下找到了答案,谢谢! :-)
public void SetSelectedItem(string itemName, ITimeout timeout = null)
{
this.GetSelf(timeout).Expand();
var list = this.GetSelf(timeout).FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List), timeout);
var listItem = list.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, itemName), timeout);
listItem.Select();
}