是什么决定通过UIAutomation可以访问哪些常见的XAML控件

时间:2018-06-10 04:24:33

标签: ui-automation uwp-xaml controltemplate microsoft-ui-automation winappdriver

我正在尝试通过UWP应用的WinAppDriver自动进行UI测试。该文档说,通过inspect.exe(即UIAutomation)可见的任何内容都可以通过WinAppDriver来控制。这意味着可以通过UIAutomation访问基本控件。有时甚至可以通过UI Automation访问这些控件中的内容。与TextBlockToggleSwitch的标头或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="&#xEB90;" x:Name="FontIcon" Foreground="DarkRed"/> </StackPanel> </ComboBox.Header> <ComboBoxItem>Green</ComboBoxItem> <ComboBoxItem>Red</ComboBoxItem> </ComboBox> 看起来类似于其他控件,例如ControlTemplateToggleSwitch,但无论出于何种原因TextBox中定义的任何内容都无法访问ControlTemplate,除了UIAutomation的id和弹出列表。所以我的问题是什么使得某些UI控件暴露了他们的内容(比如说ComboBox)而另一些没有呢?

0 个答案:

没有答案