C# TestStack白色GetParent元素

C# TestStack白色GetParent元素,c#,ui-automation,white-framework,C#,Ui Automation,White Framework,这是一个由两部分组成的问题: 1) 我试图定位元素的父元素,以便它可以是当前元素的任何父元素,基于某些属性,如controlType。 代码: control.GetParent(); 上面的代码为我提供了“control”元素的直接父元素,而不是我想要的grant父元素 control.GetParent<Tab>(); control.GetParent(); 由此我知道,这个API需要事先知道父元素类型。 2) 因此,我尝试创建一些我自己的实用程序: public sta

这是一个由两部分组成的问题:
1) 我试图定位元素的父元素,以便它可以是当前元素的任何父元素,基于某些属性,如controlType。 代码:

control.GetParent();
上面的代码为我提供了“control”元素的直接父元素,而不是我想要的grant父元素

control.GetParent<Tab>();
control.GetParent();
由此我知道,这个API需要事先知道父元素类型。
2) 因此,我尝试创建一些我自己的实用程序:

public static IUIItem GetParent(ControlType type, IUIItem control)
        {
            while (true) {
                control = control.GetParent<IUIItem>();
                Console.WriteLine(control.GetType());
                if (control.GetType().IsInstanceOfType(type)) {
                    Console.WriteLine("Found match");
                    break;
                }
            }
            return control;
        }
公共静态IUIItem GetParent(ControlType类型,IUIItem控件)
{
while(true){
control=control.GetParent();
Console.WriteLine(control.GetType());
if(control.GetType().IsInstanceOfType(类型)){
Console.WriteLine(“找到匹配项”);
打破
}
}
返回控制;
}
因此,在上面的Util方法中,当我尝试获取父元素的类型时,它会返回如下内容: Castle.proxy.TabProxy 但我希望GetType将“Tab”作为控件的类型返回给我。不确定它为什么返回Castle.proxy.TabProxy。我想知道是否有任何方法可以识别元素的控件类型,以便将其转换为相关的控件类型。
我不熟悉C#

GetType返回控件的System.Type,而不是实际的控件类型。您可以像下面这样找到控件的控件类型:

AutomationElement element = control.AutomationElement;
ControlType elementType =   element.Current.ControlType;
要获取父级的控件类型,可以使用以下代码:

AutomationElement parent = TreeWalker.RawViewWalker.GetParent(control.AutomationElement);
ControlType parentType = parent.Current.ControlType;

你成了我的好朋友,真是太多了。
AutomationElement parent = TreeWalker.RawViewWalker.GetParent(control.AutomationElement);
ControlType parentType = parent.Current.ControlType;