我可以刷新UIMap对象吗? 问题是我改变了UI元素的位置,然后我再次尝试获取AutomationElement,我得到AutomationELment但它的BoundingRectanle是无限的。 所以我假设它没有刷新UIMap对象。
有人可以帮我吗?
答案 0 :(得分:1)
在测试的UIMaps部分,您可能会遇到以下情况:
private MyTestUIMap uiMap;
public MyTestUImap UIMap
{
get
{
if (this.uiMap == null)
{
this.uiMap = new MyTestUIMap();
}
return this.uiMap;
}
}
这将在第一次使用时为UIMap对象创建单例。要刷新它,可以将uiMap对象设置为null,以便在下次使用时再次重新初始化:
public void RefreshUIMap()
{
this.uiMap = null;
}
每当您想刷新UIMap(获取新实例)时,请调用此RefreshUIMap方法。
修改强>:
再次阅读您的问题后,我认为您想刷新UIMap中的单个Object而不是UIMap对象实例。在MyTestUIMap.uitest中选择对象(假设您已安装FeaturePack 2),从对象属性中选择Search Configuration
并添加配置AlwaysSearch
。每当在脚本中使用该对象时,testrunner将在屏幕上再次搜索它,而不是试图从缓冲区中获取它。
答案 1 :(得分:0)
在Find()
上调用UITestControl
方法应该执行或重复搜索。
通常不会显式调用Find()
方法,而是使用控件隐式调用它。在控件上调用Find()
应该重新评估搜索,并且还具有清除任何子控件的效果。
答案 2 :(得分:-1)
将SearchConfiguration设置为“始终搜索”解决了我的问题,即未使用更新的值刷新单个控件会导致测试失败。
this.UIMap.UIItemWindow2.UIItemWindow11.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);