Я пытаюсь автоматизировать приложение WinForms с помощью System.Windows.Automation
, я могу получить элемент (элемент табуляции)
var tab = window.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Tab));
, но не могу получить шаблон длявыберите его (SelectionItemPattern
).Вот список шаблонов и их доступность для этого элемента (т.е. ни одного):
Patterns for ControlType.TabItem:
Is DockPatternIdentifiers.Pattern available: no
Is ExpandCollapsePatternIdentifiers.Pattern available: no
Is GridItemPatternIdentifiers.Pattern available: no
Is GridPatternIdentifiers.Pattern available: no
Is InvokePatternIdentifiers.Pattern available: no
Is ItemContainerPatternIdentifiers.Pattern available: no
Is MultipleViewPatternIdentifiers.Pattern available: no
Is RangeValuePatternIdentifiers.Pattern available: no
Is ScrollItemPatternIdentifiers.Pattern available: no
Is ScrollPatternIdentifiers.Pattern available: no
Is SelectionItemPatternIdentifiers.Pattern available: no <------------
Is SelectionPatternIdentifiers.Pattern available: no
Is SynchronizedInputPatternIdentifiers.Pattern available: no
Is TableItemPatternIdentifiers.Pattern available: no
Is TablePatternIdentifiers.Pattern available: no
Is TextPatternIdentifiers.Pattern available: no
Is TogglePatternIdentifiers.Pattern available: no
Is TransformPatternIdentifiers.Pattern available: no
Is ValuePatternIdentifiers.Pattern available: no
Is VirtualizedItemPatternIdentifiers.Pattern available: no
Is WindowPatternIdentifiers.Pattern available: no
Когда я проверяю приложение с помощью inspect.exe
или VisualUIAVerifyNative.exe
, я вижу, чтошаблон есть и доступен, вывод из inspect.exe
:
IsAnnotationPatternAvailable: false
IsDragPatternAvailable: false
IsDockPatternAvailable: false
IsDropTargetPatternAvailable: false
IsExpandCollapsePatternAvailable: false
IsGridItemPatternAvailable: false
IsGridPatternAvailable: false
IsInvokePatternAvailable: false
IsItemContainerPatternAvailable: false
IsLegacyIAccessiblePatternAvailable: true
IsMultipleViewPatternAvailable: false
IsObjectModelPatternAvailable: false
IsRangeValuePatternAvailable: false
IsScrollItemPatternAvailable: false
IsScrollPatternAvailable: false
IsSelectionItemPatternAvailable: true <---------------------------------
IsSelectionPatternAvailable: false
IsSpreadsheetItemPatternAvailable: false
IsSpreadsheetPatternAvailable: false
IsStylesPatternAvailable: false
IsSynchronizedInputPatternAvailable: false
IsTableItemPatternAvailable: false
IsTablePatternAvailable: false
IsTextChildPatternAvailable: false
IsTextEditPatternAvailable: false
IsTextPatternAvailable: false
IsTextPattern2Available: false
IsTogglePatternAvailable: false
IsTransformPatternAvailable: false
IsTransform2PatternAvailable: false
IsValuePatternAvailable: false
IsVirtualizedItemPatternAvailable: false
IsWindowPatternAvailable: false
Отлично работает для небольшого приложения, созданного с использованием чистых элементов управления WinForms.В этом случае приложение построено с использованием сторонних компонентов.Мой вывод заключается в том, что проблема в том, как автоматизация реализована в этих элементах управления.
Так действительно ли шаблон доступен?inspect.exe
получает использование через другой API?
Я могу запустить тесты доступности в VisualUIAVerifyNative
(а именно Pattern Tests
> Priority 3 Tests
> Select.1.4
test), чтобы выбрать вкладку.Или я могу выбрать, выполнив команду в сетке свойств (Patterns
> SelectionItemPattern
> Select
).
Похоже, я упустил что-то важное в моем коде C #.
Кто-нибудь может помочь?Спасибо!