C# 从UITechnologyElement获取UITestControl

C# 从UITechnologyElement获取UITestControl,c#,C#,我有一个按名称返回UITechnology元素的代码。 我的目的是能够在此元素上调用“Mouse.Click()”方法,但为此,我必须将其转换为UITestControl,或者从中获取它,我不知道 我还没有找到关于UITechnologyElement的任何解释,也没有找到它们之间的任何对应关系 所以我的问题是,我怎样才能点击这个元素,或者为了同样的目的将它转换成UITestControl private static UITechnologyElement IterateOnControl(U

我有一个按名称返回UITechnology元素的代码。 我的目的是能够在此元素上调用“Mouse.Click()”方法,但为此,我必须将其转换为UITestControl,或者从中获取它,我不知道

我还没有找到关于UITechnologyElement的任何解释,也没有找到它们之间的任何对应关系

所以我的问题是,我怎样才能点击这个元素,或者为了同样的目的将它转换成UITestControl

private static UITechnologyElement IterateOnControl(UITechnologyElement parent, string name)
{
    UITechnologyElement te = null;
    UITechnologyManager TM = Playback.GetCoreTechnologyManager("MSAA");
    IEnumerator windowEnumerator = TM.GetChildren(parent, null);
    windowEnumerator.Reset();

    while (windowEnumerator.MoveNext())
    {
        UITechnologyElement current = windowEnumerator.Current as UITechnologyElement;
        if (current.Name == name)
        {
            te = current;
            break;
        }
    }
    return te;
}

经过测试,我找到了答案

//When you have the UITechnologyElement, you can create a WinControl from it by using this methode
WinControl result = (WinControl)UITestControlFactory.FromNativeElement(control.NativeElement, "MSAA");
//Now you have the WinControl so you can convert it into a special Type, eg. WinButton
WinButton wb = (WinButton)result;
//And invoke the Mouse.Click methode
Mouse.Click(wb, MouseButtons.Left);

这就是我所需要的一切。:)

经过测试,我找到了答案

//When you have the UITechnologyElement, you can create a WinControl from it by using this methode
WinControl result = (WinControl)UITestControlFactory.FromNativeElement(control.NativeElement, "MSAA");
//Now you have the WinControl so you can convert it into a special Type, eg. WinButton
WinButton wb = (WinButton)result;
//And invoke the Mouse.Click methode
Mouse.Click(wb, MouseButtons.Left);
这就是我所需要的一切。:)