UISpy и UIA Verify показывают разные значения свойств в одной программе - PullRequest
1 голос
/ 18 октября 2011

У меня есть программа, которую я тестирую, в которой кнопка закрытия включена в одной точке и отключена в другой.UISpy показывает «isEnabled» в обеих точках как «true» UIAVerify показывает «isEnabled» в первой точке как «true», а во второй - «false»

Последнее - это то, что я могу визуально подтвердитьчтобы быть правдой, программно я получаю те же значения, что и UISpy, и мой тестовый пример не проходит.

с использованием System.Windows.Automation;

Структура дерева: "Диалог" "Имя_программы" "строка заголовка "" ProgramName "" кнопка "" Закрыть "

Кто-нибудь знает, что может быть причиной этого?Использует ли UIA Verify библиотеку, отличную от UISpy?

1 Ответ

1 голос
/ 03 января 2012

UIA Verify 2.0 использует новую встроенную библиотеку COM UIA, которая была выпущена в обновлении UIA 3.0 вместе с Windows 7 (также доступна в виде отдельного исправления KB971513 для Vista и XP SP3). UISpy, с другой стороны, я думаю, использует оригинальный управляемый API.

У меня периодически возникали проблемы с управляемой библиотекой с помощью методов .isEnabled() и .invoke(), которые я смог исправить путем перехода на библиотеку COM, которая в целом выглядит более стабильной и быстрой, чем управляемая библиотека.

Я не могу вспомнить специфику процесса миграции, но в основном вам нужно создать взаимодействующую DLL, которая позволит вашему .NET-приложению вызывать собственные методы UIA. Затем вы можете создать свою собственную библиотеку-обертку или использовать одну из перечисленных ниже.

Я бы порекомендовал обратиться к ним за помощью в переходе:

  • Адаптер автоматизации пользовательского интерфейса COM-to.NET - Ранняя попытка создания оболочки для COM API. У меня были проблемы с этим, но сначала было полезно взглянуть. Также найдите некоторые сообщения на форуме поддержки MSDN о COM API, сделанные разработчиком этой оболочки. К сожалению, я не могу ссылаться на них из-за моего низкого представителя StackOverflow (долгое время скрывался, впервые отвечал).

  • UIA Verify Source Code - Вы можете видеть, что они имеют в своем исходном коде UIAComWrapper, который используется для доступа к интерфейсу COM. В этом проекте вы также можете взглянуть на то, как они создают взаимодействующую DLL.

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