Dar*_*ryn 7 wpf automated-tests qtp ui-automation
摘要
在我的WPF应用程序中,我需要一个带左侧按钮的TabControl,所以我用我想要的布局定义了一个ControlTemplate,它运行正常.
但是,我的测试人员的自动测试工具无法看到选项卡的任何内容,包括当前选定的选项卡.
问题:如何通过自动化测试工具保持我的TabControl可测试,同时仍然定义ControlTemplate?
细节
我正在使用WPF 3.5开发WPF应用程序
我的测试人员正在使用一个名为QTP的自动测试工具
他说他可以使用UISpy.exe测试任何你能看到的内容
示例WPF应用程序(Xaml):
<Window x:Class="TabControlTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Tab Control Test"
Height="300"
Width="300">
<Window.Resources>
<ControlTemplate x:Key="ButtonsOnLeftTabLayout"
TargetType="{x:Type TabControl}">
<DockPanel>
<StackPanel DockPanel.Dock="Left"
IsItemsHost="True" />
<ContentPresenter Content="{TemplateBinding SelectedContent}" />
</DockPanel>
</ControlTemplate>
</Window.Resources>
<TabControl Template="{StaticResource ButtonsOnLeftTabLayout}">
<TabItem Header="Tab 1">
<StackPanel>
<Button HorizontalAlignment="Center">Button 1</Button>
</StackPanel>
</TabItem>
<TabItem Header="Tab 2">
<StackPanel>
<Button HorizontalAlignment="Center">Button 2</Button>
</StackPanel>
</TabItem>
</TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)
到目前为止我的搜索结果:
(搜索之后我终于找到了答案,但它花了比我想象的更长的时间,而且AutomationPeer的早期发现确实是错误的,所以我把它写成一个SO问题并自我回答,以防它在将来帮助其他人)
在不同但相似的msdn论坛问题的MSFT响应中找到答案,UI Automation缺少TabControl控件.
要使UI自动化适用于ContentTemplated TabControl,请将Name ="PART_SelectedContentHost"属性添加到ContentPresenter,就像这样
<ContentPresenter Name="PART_SelectedContentHost"
Content="{TemplateBinding SelectedContent}"/>
Run Code Online (Sandbox Code Playgroud)
这就是全部.UISpy现在可以看到当前所选选项卡的内容.
| 归档时间: |
|
| 查看次数: |
2281 次 |
| 最近记录: |