Я не могу выбрать элементы UWP ListView в codedui - PullRequest
0 голосов
/ 27 августа 2018

У меня есть приложение UWP, и я использую CodedUI для UWP

Содержит отчет, который создается как ListView, и мне нужно проверить некоторые значения в этом списке. Но когда я пытаюсь использовать инструмент «Перекрестие» для перетаскивания его в строку или список, приложение продолжает зависать, и когда мне удается захватить строку, я запускаю тестовый пример, который не удался, потому что Codedui не смог найти элемент управления.

На прилагаемой фотографии я могу зафиксировать только кнопку вкладки «Главная страница» и другие вкладки, а также раскрывающиеся списки и кнопки под ней, но если перетащить инструмент со скрещенными волосами в список, приложение будет зависать до тех пор, пока я его не закрою

enter image description here

что visualstudio записало для строки списка enter image description here

После запуска getchildren для главного окна и затем иерархии getparents для элемента управления listitem они выглядят так enter image description here

1 Ответ

0 голосов
/ 29 августа 2018

Возможно, у меня есть альтернатива вашей проблеме. Приведенный ниже код будет принимать родительский элемент управления и просеивать его до тех пор, пока все дочерние элементы не будут добавлены рекурсивно, с соблюдением иерархии элементов управления. Таким образом, вы будете иметь все доступные элементы списка во время выполнения. Исключения не найденных элементов управления здесь не должны быть проблемой, если вы постоянно обновляете 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 является обязательным, остальные свойства являются необязательными.

...