我正在尝试通过UWP应用的WinAppDriver
自动进行UI测试。该文档说,通过inspect.exe
(即UIAutomation
)可见的任何内容都可以通过WinAppDriver
来控制。这意味着可以通过UIAutomation访问基本控件。有时甚至可以通过UI Automation访问这些控件中的内容。与TextBlock
或ToggleSwitch
的标头或ComboBox
的弹出广告一样。
鼓励这样做,我修改了常用控件的ControlTemplate
,以通过UIAutomation显示控件的某些元素。请参阅ToggleSwitch
的示例(默认ControlTemplate
不会公开OnContent
的{{1}}和OffContent
属性,因为它标有ToggleSwitch
)
但是,当我attempted获取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
的id和弹出列表。所以我的问题是什么使得某些UI控件暴露了他们的内容(比如说ComboBox
)而另一些没有呢?