Недавно я узнал из этой статьи -
http://blogs.msdn.com/b/patrickdanino/archive/2009/11/11/custom-controls-and-ui-automation.aspx
- что элементы управления в WPF сами отвечают за предоставление своих элементов UIA, а также за все новые функции пользовательского элемента управления.недоступны для МАУ, пока они не будут представлены через реализацию соответствующего класса AutomationPeer.На моей работе мне поручено автоматизировать тестирование пользовательского интерфейса приложения WPF, в котором используется большое количество панелей инструментов.Проблема заключается в том, что через библиотеку автоматизации пользовательского интерфейса Microsoft я могу получить доступ к панелям инструментов (очевидно, которые разработаны как пользовательский элемент управления) как элементы AutomationElements, но не могу получить доступ к кнопкам внутри них - коллекция дочерних элементов / потомков всегда возвращает 0. При использовании теста закодированного пользовательского интерфейсатесты всегда терпят неудачу и показывают следующее сообщение об ошибке:
Метод теста CAM2QDummyTest.CodedUITest2.CodedUITestMethod1 выбросил исключение:
Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPlockedCore:контроль блокирует контроль.Пожалуйста, сделайте заблокированный элемент управления видимым и повторите действие.Дополнительные сведения:
TechnologyName: 'MSAA'
Имя: 'Standard'
ControlType: 'ToolBar'
---> System.Runtime.InteropServices.COMException: исключение из HRESULT: 0xF004F003
Очевидно, они не реализовали соответствующие классы AutomationPeer.Теперь у меня есть только приложение, а не исходный код.Поэтому я не могу решить проблему так, как описано в статье, которую я упоминал выше.Может кто-нибудь помочь с любой подсказкой, как я могу получить доступ к внутренним кнопкам панели инструментов?Любое предложение будет с благодарностью.