我试图在代码优先方法(页面对象模式)中为WPF UI使用CodedUI。我能够在主窗口的选项卡中导航到组框内的特定列表项。每个列表项都包含一个复选框以及其他一些内容;我想自动点击该复选框,但我收到了一条例外信息'搜索可能在" TabList,因为它可能已经虚拟化了孩子......'
唯一的问题是,我根据以下代码将包含WpfListItem
设置为WpfCheckBox
的父级:
public class ConfigItem
{
private readonly WpfListItem _instance;
public WecoConfigItem([NotNull] WpfListItem instance)
{
if (instance == null) throw new ArgumentNullException("instance");
_instance = instance;
}
public ConfigItem SelectConfiguration()
{
var checkBox = new WpfCheckBox(_instance);
_instance.DrawHighlight();
checkBox.SearchProperties.Add(WpfCheckBox.PropertyNames.AutomationId, "cbIsSelected");
Mouse.Click(checkBox);
return this;
}
}
SelectConfiguration方法发生故障。在测试执行期间,相应的ListItem
会突出显示,但随后在html输出中,录制的图像会突出显示应用程序。所以,有些问题:
WpfListItem
作为父项时,为什么搜索从应用程序窗口开始?DrawHighlight()
输出和HTML输出之间出现差异的事情?WpfListItem
父对象开头?编辑:搜索实际上是从顶级应用程序开始,而不是标签 - 我正在查看陈旧的HTML日志。问题陈述仍然基本相同。
答案 0 :(得分:0)
当您调用DrawHighlight()时,您正在启动搜索。然后下一个语句提供其他搜索条件,然后再次访问控件(Mouse.click()),然后您从缓存中读取。我假设您需要通过将SearchOptions设置为AlwaysSearch来禁用缓存,或者在调用DrawHighlight()之前添加条件。