Что решает, какая часть общих элементов управления XAML доступна через UIAutomation - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь автоматизировать тестирование пользовательского интерфейса с помощью 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="&#xEB90;"
                      x:Name="FontIcon"
                      Foreground="DarkRed"/>
        </StackPanel>
    </ComboBox.Header>
    <ComboBoxItem>Green</ComboBoxItem>
    <ComboBoxItem>Red</ComboBoxItem>
</ComboBox>

ControlTemplate выглядит аналогично другим элементам управления, таким как ToggleSwitch и TextBox, но по какой-то причине ничего, определенного в ControlTemplate, не становится доступным для UIAutomation, кроме идентификатораи всплывающий список для ComboBox.Поэтому мой вопрос заключается в том, что заставляет определенный элемент управления пользовательского интерфейса выставлять свое содержимое (скажем, Header), а некоторые другие - нет?

...