我可以刷新 UIMap 对象吗?问题是我更改了 UI 元素的位置,然后我再次尝试获取 AutomationElement,当时我得到了 AutomationELment,但它的 BoundingRectanle 是无穷大的。所以我假设它没有刷新 UIMap 对象。
谁能帮我解决这个问题?
我可以刷新 UIMap 对象吗?问题是我更改了 UI 元素的位置,然后我再次尝试获取 AutomationElement,当时我得到了 AutomationELment,但它的 BoundingRectanle 是无穷大的。所以我假设它没有刷新 UIMap 对象。
谁能帮我解决这个问题?
在测试的 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 中的单个对象,而不是 UIMap 对象实例。在 MyTestUIMap.uitest 中选择对象(假设您安装了 FeaturePack 2),Search Configuration
从对象属性中选择并添加配置AlwaysSearch
。每当在您的脚本中使用该对象时,测试运行程序都会在屏幕上再次搜索它,而不是尝试从缓冲区中获取它。
在 any 上调用该Find()
方法UITestControl
应该执行或重复搜索。
通常该Find()
方法不是显式调用的,而是使用控件隐式调用的。调用Find()
控件应该重新评估搜索并且还具有清除任何子控件的效果。
将 SearchConfiguration 设置为 Always Search 解决了我的问题,即未使用更新值刷新单个控件导致测试失败。
this.UIMap.UIItemWindow2.UIItemWindow11.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);