TestStack White GetParent Element

时间:2016-02-16 11:14:11

标签: c# ui-automation white

这是一个2部分问题:
1)我试图找到元素的父元素,使它可以是基于某些属性(如controlType)的当前元素的任何祖父。 代码:

control.GetParent<IUIItem>();

上面的代码给了我&#34;控制&#34;的直接父母。元素,而不是我想要的授予父母

control.GetParent<Tab>();

从此我知道这个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;
        }

所以在上面的Util方法中,当我尝试获取父元素的类型时,它返回的内容如下:     Castle.Proxies.TabProxy 但是我期待GetType让我回归&#34; Tab&#34;作为控件的类型。不知道为什么它会返回Castle.Proxies.TabProxy。我想知道是否有任何方法来识别元素的控件类型,以便它可以转换为相关的控件类型。 我是C#

的新手

1 个答案:

答案 0 :(得分:2)

GetType返回控件的System.Type,而不是实际的控件类型。你可以找到控件的控件类型,如下所示:

AutomationElement element = control.AutomationElement;
ControlType elementType =   element.Current.ControlType;

要获取父级的控制类型,您可以使用以下代码:

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