Har*_*ber 4 wpf white-framework ui-automation caliburn.micro
我正在尝试为使用Caliburn.Micro和White的WPF应用程序编写一些UI自动化测试.我使用CM的内置约定将我的控件绑定到视图模型的属性和方法.我也在使用Conductor类,这样我可以在一个屏幕上看到多个视图.这通常意味着屏幕上的多个控件最终可能具有相同的x:Name值.它将被绑定到不同的视图模型.在CM附带的HelloScreens示例应用程序中可以看到我想要做的好事.
我遇到的问题是我将拥有多个具有相同x:Name属性的XAML元素,以便CM可以为我处理所有绑定工作.遗憾的是,这意味着多个UIItem对象将具有相同的UI自动化ID.例如,我发现获得不同TextBlock元素的唯一方法x:Name="DisplayName"是进行如下调用:
SearchCriteria criteria = SearchCriteria.ByAutomationId("DisplayName").AndIndex(1);
WPFLabel label = myWindow.Get<WPFLabel>(criteria);
Run Code Online (Sandbox Code Playgroud)
这意味着我的测试需要知道屏幕上放置不同控件的确切顺序,这看起来非常脆弱.通过添加另一个视图模型,我可以看到我的测试全部破坏.
x:Name属性之外,有没有办法指定自动化ID ?x:Name值并手动绑定它们?更新
通过一次看到多个视图来澄清我的意思,这是我的总体布局.我有我的ShellViewModel,我从派生Conductor<IScreen>.Collection.OneActive.然后我的视图ItemsControl绑定到shell视图模型的Items属性.每个项目模板都会显示一个按钮,用于将特定内容加载IScreen到ContentControlshell视图中.所以,如果我试图寻找一个元素x:Name="DisplayName",我在shell视图上有标签,按钮上的ItemsControl标签以及内部的标签ContentControl.
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |