如何从UITestControl获取ItemStatus?

时间:2009-12-04 19:03:28

标签: wpf ui-automation coded-ui-tests

UI Automation framework有一个基类AutomationElement,它有一个属性ItemStatus,可用于存储任意字符串。我正在尝试从Visual Studio 2010 Coded UI Tests基类UITestControl获取该属性。

1 个答案:

答案 0 :(得分:2)

查看编码的UI测试为WpfControl生成的代码。它有一个属性NativeElement。此属性为AutomationElement

public abstract class WpfControl : UITestControl
{
    ...

    public virtual object NativeElement
    {
        get
        {
            return ((object)(this.GetProperty(UITestControlProperties.Common.NativeElement)));
        }
    }

    ...
}

您可以编写一个扩展方法来强制转换它并获取ItemStatus。

public static string GetItemStatus(this WpfControl control)
{
    var automationElement = (AutomationElement)control.NativeElement;
    return automationElement.Current.ItemStatus;
}

我不确定为什么将NativeElement记录为object(这会使getter强制转换为多余)。所有WPF控件的NativeElement都是AutomationElement类型。我建议编辑生成的代码,然后直接调用control.NativeElement.Current.ItemStatus