我无法在Codedui中选择UWP ListView项目

时间:2018-08-27 13:48:39

标签: uwp automated-tests coded-ui-tests

我有一个UWP应用程序,并且正在使用CodedUI进行UWP

它包含一个创建为ListView的报告,我需要验证此列表中的某些值。但是,当我尝试使用十字线工具将其拖到行或列表上时,应用程序一直挂起,并且当我成功捕获行时,我运行测试用例失败,因为Codedui找不到控件。

在随附的照片中,我只能捕获“主页”选项卡按钮和其他选项卡以及下拉菜单和其下方的按钮,但是如果在列表上拖动十字线工具,它将一直挂起应用程序,直到关闭它为止。

enter image description here

为listitem行捕获的visualstudio enter image description here

在为主窗口运行getchildren,然后为listitem控件运行getparents层次结构之后,这就是它们的样子 enter image description here

1 个答案:

答案 0 :(得分:0)

我可能有替代您的问题的方法。下面的代码将采用父控件并将其筛选通过,直到以递归的方式添加所有子控件,并遵守控件层次结构。这样,您将在运行时拥有所有可用的listview项。如果只要列表视图项集合发生更改,只要使KeyValuePair保持最新状态,这里找不到控件异常就不会成为问题。

使用此递归方法:

    public ParentControl GetChildControls(UITestControl parentControl)
    {
        ParentControl parent = new ParentControl();

        if (parentControl != null)
        {
            List<ParentControl> children = new List<ParentControl>();

            foreach (UITestControl childControl in parentControl.GetChildren())
            {
                children.Add(GetChildControls(childControl));
            }

            parent.Children = new KeyValuePair<UITestControl, List<ParentControl>>(parentControl, children);
        }

        return parent;
    }

ParentControl对象:

public class ParentControl
{
    public KeyValuePair<UITestControl, List<ParentControl>> Children { get; set; }
    public string Value
    {
        get
        {
            return Children.Key.Name;
        }
    }
}

Children属性是必需的,其他属性是可选的。