2

我正在尝试通过WinAppDriverUWP 应用程序自动化 UI 测试。文档说,任何通过inspect.exe(ie UIAutomation) 可见的东西都可以通过WinAppDriver. 这意味着可以通过 UIAutomation 访问基本控件。有时甚至可以通过 UI 自动化访问这些控件中的内容。就像 or 的标题TextBlockToggleSwitch或 a 的弹出窗口一样ComboBox

受此鼓舞,我修改了ControlTemplate常用控件,使控件的某些元素通过 UIAutomation 可见。参见示例ToggleSwitch(默认ControlTemplate不公开 的OnContentOffContent的属性,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看起来类似于其他控件,如and ToggleSwitch,但无论出于TextBox何种原因,除了 id 和弹出列表之外,没有任何定义在. 所以我的问题是,是什么让某些 UI 控件公开了它们的内容(比如)而其他一些不公开?ControlTemplateUIAutomationComboBoxHeader

4

0 回答 0