【问题标题】:Refresh White Automation Element Tree刷新白色自动化元素树
【发布时间】:2015-12-14 19:25:30
【问题描述】:

我正在使用 TestStack.White 进行自动化 UI 测试。我遇到的一个问题是,在我单击一个显示新屏幕的按钮后,元素树没有更新。

White 使用 UI 自动化验证(Microsoft 工具)工作,因此如果您无法使用该工具找到元素,White 也将无法找到它。

如果我打开应用程序,单击按钮以呈现视图,然后打开 UI 自动化验证,然后该新视图中的所有字段都会显示在工具中。但是,如果我在单击按钮之前打开了 UI 自动化验证,则新视图不会显示在工具中。因此,似乎我需要以某种方式简单地刷新元素树。

有什么方法可以在 C# 中执行此操作,以便我的 White 测试能够看到那些新渲染的元素?

【问题讨论】:

    标签: c# ui-automation microsoft-ui-automation white-framework


    【解决方案1】:

    我遇到了同样的问题(从创建控件切换到简单地更改现有控件的可见性时)。 在该代码工作之前:

    checkButton.Toggle();
    

    之后就没有了。解决方案是使用

    Mouse.Instance.Click(checkButton.ClickablePoint);
    

    改为。

    当您直接使用 Mouse 对象时,TestStack/White 会以某种方式更好地响应和刷新 UI。

    【讨论】:

      【解决方案2】:

      您是否尝试过 InitializeOption.WithCache 选项?

      Window modalWindow = mainWindow.ModalWindow(SearchCriteria.ByText("Modal Window"), InitializeOption.WithCache);
      modalWindow.ReloadIfCached();
      //or
      modalWindow.ReInitialize(InitializeOption.WithCache);
      

      【讨论】:

      • 是的,我已经尝试了这两种方法,但都没有成功:(
      • 看来您必须将您的进程重新附加到 White.Application,然后再次找到主应用程序窗口。
      • 刚刚尝试过,它也不起作用:TestStack.White.Application.Attach("Portal"); mainWindow = myApplication.GetWindow(SearchCriteria.ByClassName("Window"), InitializeOption.WithCache);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多