即使支持,也无法使用ValuePattern

时间:2013-08-05 11:47:23

标签: c# .net automation ui-automation

我遇到了ValuePattern的问题。我有以下代码:

ValuePattern valuePattern = null;

try
{
        valuePattern = AElement.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
        valuePattern.SetValue(EditableElement.value[0].ToString());

        Debug.WriteLine(AElement.Current.Name + "'s value changed to {0}.", EditableElement.value[0].ToString());
}
catch (InvalidOperationException)
{
        Debug.WriteLine("Value pattern not supported for " + AElement.Current.Name);
        return;
}

我正在使用controltype.Edit传递一个AutomationElement,当我检查这个元素时,我会收到这条信息:

ControlType.Edit
    ValuePatternIdentifiers.Pattern
    LegacyIAccessiblePatternIdentifiers.Pattern
A first chance exception of type 'System.InvalidOperationException' occurred in       UIAComWrapper.dll
Value pattern not supported

有没有人知道为什么在GetSupportedPatterns()中列出ValuePatternIdentifiers.Pattern而不支持valuepattern?

1 个答案:

答案 0 :(得分:1)

在您检查可用模式与触发valuePatter.SetValue之间的时间范围内,模式可能会消失或变得不可用。

所以,我建议,在触发valuePattern.SetValue并验证Value Pattern的存在之前,只需打印 GetAllSupportedPatterns

另外,如果您有UIAVerifier的副本,您可以随时尝试手动进行更改并隔离Window Control或您的代码是否有问题。