2

我在编码的 ui 测试中使用 uimap 来获取有关应用程序中控制器的信息,为列表框返回的值是“client”-controlType、technicalname MSAA 和 Name = session。我的目标是能够获取列表框的所有值,然后使用代码选择一个值。有没有办法做到这一点 ?非常感谢。

4

2 回答 2

4

给定UITestControl列表框的对象,您应该能够使用该GetChildren方法获取所有列表条目。它返回一个包含父控件的所有子控件的集合。根据列表框的确切结构及其内容,您可能需要重复调​​用该方法以获取孙控件或更深的控件。

请参阅http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.uitesting.uitestcontrol.getchildren.aspx

更新

在 C# 中,您可能会根据以下内容编写代码:

foreach (UITestControl child in parent.GetChildren()) {
    if ( someTestOfTheControl(child) ) {
        ... process the child control here ...
    }
}

或者可能在

foreach (UITestControl child in parent.GetChildren()) {
    foreach (UITestControl grandChild in child.GetChildren()) {
        if ( someTestOfTheControl(grandChild) ) {
            ... process the grandChild control here ...
        }
    }
}

WheresomeTestOfTheControl()测试控件是否是您感兴趣的控件。

于 2013-08-06T12:32:11.257 回答
0

使用 UIMap - 获取 ListBox 的控制权

ItemToSelect - 是字符串中的项目名称

WinList ListControl = new WinList(Control);
string[] CompleteList = ListControl.GetContent();
        CompleteList = CompleteList.Where(x => x != null).ToArray();
        string Value = CompleteList.First(x => x.Contains(ItemToSelect));
        Mouse.Click((WinListItem)ListControl.Items.FirstOrDefault(x => x.Name.Contains(Value)));
于 2017-07-10T05:58:50.670 回答