2016-12-08 10 views
0

Я пытаюсь использовать CodedUI в кодовом подходе (шаблон объекта страницы) для интерфейса WPF. Я могу перейти к определенному элементу списка в групповом ящике на вкладке в главном окне. Каждый элемент списка содержит флажок вместе с другим содержимым; Я бы хотел автоматизировать щелчок на флажке, но я получаю исключение с сообщением «Поиск может быть неудачным в« TabList, поскольку у него могут быть виртуализированные дети ... »Как ограничить CodedUI, чтобы начать поиск с родительского объекта?

Единственное, что я установки, содержащий WpfListItem в качестве родителя для WpfCheckBox в соответствии со следующим кодом:.

public class ConfigItem 
{ 
    private readonly WpfListItem _instance; 

    public WecoConfigItem([NotNull] WpfListItem instance) 
    { 
     if (instance == null) throw new ArgumentNullException("instance"); 
     _instance = instance; 
    } 

    public ConfigItem SelectConfiguration() 
    { 
     var checkBox = new WpfCheckBox(_instance); 
     _instance.DrawHighlight(); 
     checkBox.SearchProperties.Add(WpfCheckBox.PropertyNames.AutomationId, "cbIsSelected"); 
     Mouse.Click(checkBox); 
     return this; 
    } 
} 

ошибка возникает в методе SelectConfiguration во время выполнения теста, соответствующий ListItem выделен, а затем на выходе HTML записанные основные моменты изображения приложение. Итак, некоторые вопросы:

  1. Почему поиск начинается с окна приложения, когда я предоставляю WpfListItem в качестве родителя в конструкторе?
  2. Я делаю что-то, что вызывает несоответствие между выходом DrawHighlight() и выходом HTML?
  3. Как ограничить поиск, начинающийся с родительского объекта WpfListItem, для подхода к шаблону объекта первой страницы кода?

EDIT: Поиск фактически начиная с приложения верхнего уровня, а не вкладка - я смотрел на несвежий журнале HTML. Заявление о проблемах по-прежнему по сути одно и то же.

+0

Где и как инициализировать _instance? Вероятно, вам придется начать с приложения и всю иерархию. Вероятно, это связано с тем, как архитектуры MSAA/UIA являются архитектурой. Проверьте это https://blogs.msdn.microsoft.com/tapas_sahoos_blog/2011/04/21/illustration-of-coded-ui-test-playback-failure-search-may-have-failed-at-controlx-as -Он-может-быть-виртуализированных-дети / –

ответ

0

В тот момент, когда вы вызываете DrawHighlight(), вы инициируете поиск. Следующий оператор затем предоставляет дополнительные критерии поиска, а затем вы снова получаете доступ к элементу управления (Mouse.click()), но затем вы читаете из кеша. Я предполагаю, что вам нужно отключить кеш, установив SearchOptions в AlwaysSearch или добавив критерии перед вызовом DrawHighlight().