UI Automation Проверка для нахождения AutomationId элементов - PullRequest
1 голос
/ 13 декабря 2011

Я пытаюсь автоматизировать тестирование приложения, написанного на C ++. Я использую UI Automation: http://msdn.microsoft.com/en-us/library/ms747327.aspx Я использовал UIAVerify, чтобы найти automationIds некоторых элементов, но некоторые элементы отображаются как отключенные (неактивные) в инструменте.

Означает ли это, что взаимодействия для некоторых элементов не автоматизируются? Как автоматизировать взаимодействие для элемента, который не имеет значения AutomationId?

РЕДАКТИРОВАТЬ: Я пытаюсь использовать автоматизацию, чтобы щелкнуть по элементу управления, для которого ControlType.Custom и для него установлено свойство Name. Есть ли способ сделать это? Я пробовал эти два способа, оба провалились:

метод 1:

//using framework white
var button = window.Get(SearchCriteria.ByControlType(ControlType.Custom).AndByText ("<Name Property>"));

метод 2:

//using Automation Framework
aeCtrl = aeParentPanel.FindFirst(TreeScope.Children,
                            new PropertyCondition(AutomationElement.NameProperty, "<Name Property>"));

1 Ответ

4 голосов
/ 13 декабря 2011

Из "Как использовать проверку пользовательского интерфейса" Файл Word .doc, который связан со страницей Проверка МСА на codeplex:

Примечание Затемненный (недоступный) узел в дереве элементов автоматизации указывает, что элемент является членом необработанного представления пользовательского интерфейса автоматизации, но не удовлетворяет условиям, необходимым для того, чтобы считаться элементом представления содержимого или элемента управления Посмотреть. Тем не менее, элемент все еще может быть протестирован из Visual UI Automation Verify Для получения дополнительной информации см. Обзор дерева автоматизации пользовательского интерфейса.

В основном это означает, что эти элементы являются элементами 'chrome', они представляют собой элементы меню или полосы прокрутки, а не содержимое, например элементы списка. Они все еще там и могут быть проверены.

-

Не каждый элемент имеет AutomationID. Это действительно зависит от разработчика, чтобы установить их как подходящие для использования в тестировании. В некоторых случаях они исходят из базовой структуры: например, для элементов управления Win32, Control ID - если присутствует - используется для генерации AutomationID. В WPF вы должны установить, что деверлопер должен назначить его через AutomationProperties.AutomationId Attached Property.

Как правило, это единственный набор элементов управления в диалоговых окнах, который используется для различения между ними. Элементы в элементе управления - например. элементы в списке - обычно идентифицируются по Name (или Value для других элементов управления). Это особенно относится к элементам, которые генерируются из внешнего источника, например списка, содержащего имена файлов, поскольку разумного способа заранее назначить AutomationIDs там не может быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...