1

我可以刷新 UIMap 对象吗?问题是我更改了 UI 元素的位置,然后我再次尝试获取 AutomationElement,当时我得到了 AutomationELment,但它的 BoundingRectanle 是无穷大的。所以我假设它没有刷新 UIMap 对象。

谁能帮我解决这个问题?

4

3 回答 3

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 中的单个对象,而不是 UIMap 对象实例。在 MyTestUIMap.uitest 中选择对象(假设您安装了 FeaturePack 2),Search Configuration从对象属性中选择并添加配置AlwaysSearch。每当在您的脚本中使用该对象时,测试运行程序都会在屏幕上再次搜索它,而不是尝试从缓冲区中获取它。

于 2012-06-04T07:51:28.043 回答
0

在 any 上调用该Find()方法UITestControl应该执行或重复搜索。

通常该Find()方法不是显式调用的,而是使用控件隐式调用的。调用Find()控件应该重新评估搜索并且还具有清除任何子控件的效果。

于 2014-01-25T10:50:11.430 回答
-1

将 SearchConfiguration 设置为 Always Search 解决了我的问题,即未使用更新值刷新单个控件导致测试失败。

this.UIMap.UIItemWindow2.UIItemWindow11.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
于 2018-07-23T15:48:45.983 回答