我尝试使用UIAutomation获取组合框的选定值。到目前为止,我的代码如下:
var cbx = tree.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "desktopCbx"));
var value = cbx.Current.Name;
它没有给我正确的价值。我怎样才能找到合适的人?
答案 0 :(得分:1)
ComboBox AutomationElement实现了ValuePattern。您可以使用此模式设置或获取ComboBox的选定值。
我在我的框架中使用这些方法来设置和获取支持ValuePattern的AutomationElement的值:
public static string Element_GetValue(AutomationElement control)
{
string value = null;
object patternProvider;
if (control.TryGetCurrentPattern(ValuePattern.Pattern, out patternProvider))
{
ValuePattern valuePatternProvider = patternProvider as ValuePattern;
value = valuePatternProvider.Current.Value;
}
return value;
}
public static bool Element_SetValue(AutomationElement control, string value)
{
object patternProvider;
if (control.TryGetCurrentPattern(ValuePattern.Pattern, out patternProvider))
{
ValuePattern valuePatternProvider = patternProvider as ValuePattern;
valuePatternProvider.SetValue(value);
return true;
}
return false;
}
在您的方案中,您可以使用Element_GetValue()
方法,如下所示:
var cbx = tree.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "desktopCbx"));
var value = Element_GetValue(cbx);
答案 1 :(得分:0)
通常,Combobox是一个复合控件,包含编辑控件,按钮(用于下拉列表)和列表。 所选项目文本通常是组合框的编辑控件子项的属性。
UI Spy应该很快清除它。