Uispy и UIA проверяют, показывают разные значения свойства в одной и той же программе

StackOverflow https://stackoverflow.com/questions/7810250

Вопрос

У меня есть программа, которую я тестирую, в которой есть кнопка закрытия в один момент, и отключена в другой. Uispy показывает «Isenabled» в обе точки, чтобы быть «true» uiaverify показывает «Isenabled» в первом точке, чтобы быть «истинным», а во втором - «ложь»

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

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

Структура дерева: «Диалог» «Программа» «Название» «Название» «Программа» «Кнопка" "Закрыть"

Кто -нибудь знает, что может вызвать это? Проверяет ли UIA использовать другую библиотеку, чем Uispy?

Это было полезно?

Решение

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top