如何使用MS编码的UI测试(CUIT)检查WPF控件是否隐藏/折叠

时间:2014-08-30 10:28:21

标签: c# wpf coded-ui-tests

我想编写一个编码的UI测试,例如"某些WPF控件,当某些条件不可见时#34;。我怎么断言"不可见"?

重现问题:

  • 创建新的WPF应用
  • 只在主窗口中添加一个大的命名按钮
  • 转到CUIT编辑器并识别按钮
  • 没有关闭CUIT编辑器关闭WPF应用程序
  • 添加Visibility =" Hidden"按钮
  • 重启应用
  • 选择CUIT编辑器中的按钮,然后按"刷新"按钮
  • 注意:隐藏按钮的属性与可见按钮的属性完全相同!

没有办法断言按钮被隐藏了!

此外:

  1. 我很高兴听到您正在使用的变通方法。毕竟我需要的是编写测试,而不是想出CUITs
  2. 我知道我可以比较屏幕截图
  3. 有趣的是,如果您尝试使用隐藏按钮执行操作,CUIT将抛出。这意味着CUIT知道按钮何时被隐藏。
  4. 有趣的是,如果Visibility =" Collapsed"而不是"隐藏" CUIT将通过报告Width = Height = -1来识别它。但这对折叠的按钮没有任何帮助:(

2 个答案:

答案 0 :(得分:1)

我发现解决IsVisible限制的最佳方法是使用UITestControl对象的TryGetClickablePoint(out System.Drawing.Point)方法。此方法将返回一个布尔值。所以,例如,如果你有一个WpfButton:

WpfButton mine = new WpfButton(parent);
mine.SearchProperties["id"] = "id";

Point toString;
bool result = mine.TryGetClickablePoint(out toString);
Assert.IsTrue(result, "My Assertion here.");

这种情况经常发生。但是,要处理折叠或展开,对象的某些属性是否会根据其状态而变化?例如,如果类为class="myobject expanded",则可以根据mine.GetProperty("Class").ToString().Contains("expanded");轻松断言为布尔值。

答案 1 :(得分:-1)

尝试使用 GetProperty 方法:

WpfButton myButton = new WpfButton();
if(myButton.GetProperty("Enabled").Equals(true))
{
     ... CODE
}