我正在尝试通过WinAppDriver
UWP 应用程序自动化 UI 测试。文档说,任何通过inspect.exe
(ie UIAutomation
) 可见的东西都可以通过WinAppDriver
. 这意味着可以通过 UIAutomation 访问基本控件。有时甚至可以通过 UI 自动化访问这些控件中的内容。就像 or 的标题TextBlock
,ToggleSwitch
或 a 的弹出窗口一样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
看起来类似于其他控件,如and ToggleSwitch
,但无论出于TextBox
何种原因,除了 id 和弹出列表之外,没有任何定义在. 所以我的问题是,是什么让某些 UI 控件公开了它们的内容(比如)而其他一些不公开?ControlTemplate
UIAutomation
ComboBox
Header