Автоматизация тестирования - приложение Win32 - автоматизация белого / пользовательского интерфейса - проблема с распознаванием объектов

Я ищу альтернативу существующим тестам, написанным на QTP, для моего приложения Win32, написанного на Borland C++. Мой кандидат — White, основанный на автоматизации пользовательского интерфейса, поскольку это нативное решение. Я могу создавать свои тесты с помощью .NET/C# и легко интегрировать их с nUnit и Hudson.

Белый http://white.codeplex.com

Автоматизация пользовательского интерфейса MS http://msdn.microsoft.com/en-us/library/ms747327.aspx

Проверка пользовательского интерфейса http://uiautomationverify.codeplex.com

Я использую UI Verify в качестве шпиона для определения свойств объектов, которые я хочу найти в своих тестах. Более или менее, когда я вижу что-то в шпионе, я могу найти это с помощью UI Automation/White. Как правило, у меня не возникает особых проблем с распознаванием объектов, но когда я пытаюсь найти какой-либо контент внутри вкладки, содержащейся на панели вкладок, или пытаюсь увидеть элементы меню в строке меню, возникает проблема.

UI Automation/UI Verify работает в проводном режиме. Когда я запускаю UI Verify (версия 1.0), я вижу, что объекты могут быть зарегистрированы правильно только тогда, когда я устанавливаю параметр «Отслеживание фокуса» и нажимаю на целевые объекты или меняю на них курсор клавиатуры. Иначе найти их невозможно. Тогда UI Verifier может показать мне дочерние элементы моей панели вкладок. Но я не могу найти их с помощью UI Automation/White. Это пример кода:

Вкладка вкладка = окно.Получить(); ITabPage tabPage = tab.SelectedTab; AutomationElementCollection newCol = tabPage.AutomationElement.FindAll(TreeScope.Descendants, Condition.TrueCondition); окно.Получить("Имякнопки");

коллекция пуста, хотя шпион видит детей.

  1. Есть ли у кого-нибудь из вас опыт работы с библиотекой White/UI Automation, которым он/она хотел бы поделиться со мной?
  2. Я хочу внедрить функцию отслеживания из шпиона в свои тесты. Вы можете помочь мне с этим? Пытаюсь изучить код шпиона UIA Verify. Я думаю, что за отлов объектов отвечают два класса: FocusChangeListener и FocusTracer — это код:

http://uiautomationverify.codeplex.com/SourceControl/changeset/view/9992#214260 http://uiautomationverify.codeplex.com/SourceControl/changeset/view/9992#214192

Требования: 1. Windows SDK 2. .NET 3.5 3. Белый 4. Код проверки UIA

  1. Есть ли у вас лучшая альтернатива для White/UI Automation?

R.


person Robert    schedule 02.06.2011    source источник
comment
какова ценность tabPage? Это ноль? Вы пробовали тип управления White TabItem вместо TabPage?   -  person Rami A.    schedule 07.06.2011
comment
Здравствуйте, столкнулся с такой же проблемой, вы нашли решение?   -  person Saturn Technologies    schedule 03.04.2012


Ответы (1)


Не могли бы вы, R или YoYo, выложить вашу форму в скомпилированном виде или в исходниках (желательно без внутренней логики) где-нибудь на файлообменнике? Я никогда не видел элемента управления, который не был бы перехвачен с помощью автоматизации пользовательского интерфейса, если бы его увидел UIAVerify. Я видел такие окна, которые можно было поймать только с помощью функции отслеживания фокуса UIAVerify. В данном случае такое окно недоступно для поиска UI Automation.

Что касается элемента управления, вы уверены, что элементы управления, с которыми вы боретесь, имеют свойство Name? Может быть, это значение доступно только через ValuePattern, а не через Name?

person Alexander Petrovskiy    schedule 19.04.2012
comment
У меня сейчас нет доступа к коду, но это был Borland C++, и это было очень красочно. Объекты, которые я пытался обнаружить, были динамическими и вызывали большую боль. В конце концов я использовал гибридное решение с использованием White/UI Automation и TestComplete (потому что моя компания уже купила лицензии). Но если закрытый/коммерческий TestComplete может получить доступ к этим объектам, то наверняка это возможно с использованием инструментов с открытым исходным кодом. - person Robert; 23.08.2012
comment
Вы можете попробовать модуль UIAutomation PowerShell или UIAutomationSpy (оба взяты с uiautomation.codeplex.com). Некоторые элементы управления Deplhi (я думаю, что Borland C++ из того же семейства) недоступны из MS UI Automation. Однако, если AutomationElement.FromPoint() в UIA Verify может получить элемент управления, UIAutomationSpy должен сгенерировать код, который будет использовать модуль UIAutomation. - person Alexander Petrovskiy; 02.10.2012