Я пытаюсь автоматизировать тестирование пользовательского интерфейса с помощью WinAppDriver
приложения UWP.В документе сказано, что все, что видно через inspect.exe
(то есть UIAutomation
), может контролироваться через WinAppDriver
.Это означает, что к основным элементам управления можно получить доступ через UIAutomation.И иногда даже содержимое этих элементов управления доступно через UI Automation.Как и заголовок для TextBlock
или ToggleSwitch
, или всплывающее окно для ComboBox
.
. Воодушевленный этим, я изменил ControlTemplate
общих элементов управления, чтобы сделать определенные элементы элемента управлениявидимый через UIAutomation.См. Пример ToggleSwitch
(значение по умолчанию ControlTemplate
не раскрывает свойства OnContent
и OffContent
ToggleSwitch
, поскольку оно помечено AutomationProperties.AutomationView = "Raw"
)
Однако, когда я попытался получить заголовок ComboBox
, я не смог получить к нему доступ через UIAutomation
.
<ComboBox x:Name="Box">
<ComboBox.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="This is a combobox" x:Name="Block" AutomationProperties.Name="TextBlock1" />
<FontIcon VerticalAlignment="Top"
AutomationProperties.AutomationId="Error"
FontFamily="Segoe MDL2 Assets"
Margin="2 0"
Glyph=""
x:Name="FontIcon"
Foreground="DarkRed"/>
</StackPanel>
</ComboBox.Header>
<ComboBoxItem>Green</ComboBoxItem>
<ComboBoxItem>Red</ComboBoxItem>
</ComboBox>
ControlTemplate
выглядит аналогично другим элементам управления, таким как ToggleSwitch
и TextBox
, но по какой-то причине ничего, определенного в ControlTemplate
, не становится доступным для UIAutomation
, кроме идентификатораи всплывающий список для ComboBox
.Поэтому мой вопрос заключается в том, что заставляет определенный элемент управления пользовательского интерфейса выставлять свое содержимое (скажем, Header
), а некоторые другие - нет?