【问题标题】:Off screen element teststack white离屏元素teststack白色
【发布时间】:2015-05-11 21:45:06
【问题描述】:

我需要自动化第 3 方 WPF 应用程序。我用 测试堆栈/白色。此应用程序具有由图像呈现的菜单栏。在某些操作菜单发生变化后。那里提出了新的图像。当我想点击新图片时:

Window mainWindow = application.GetWindow("Main window", InitializeOption.NoCache);
Image newTask = mainWindow.Get<Image>(SearchCriteria.ByControlType(ControlType.Image).AndIndex(2));
newTask.Click();

我得到异常:

TestStack.White.AutomationException:无法对图像执行操作。 AutomationId:, Name:, ControlType:image, FrameworkId:WPF, 元素是 离屏。

我将 Microsoft Inspect 用于研究元素。 当我开始测试时,Inspect 显示图像不在屏幕上。但是,如果我手动执行这些操作,它会完美运行,并且在 Inspect 中此图像不会脱离屏幕。

如何刷新这些元素或清除窗口缓存?

【问题讨论】:

  • 您或许应该在单击图像之前添加一个等待调用,以允许新图像出现在屏幕上。
  • 我尝试添加大等待。但这无济于事。
  • 能否请您张贴来自inspect with the heirarchy 的属性的屏幕截图?

标签: c# ui-automation white-framework


【解决方案1】:

Window 对象有 ReInitialize 和 ReloadIfCached 方法。试试这些看看是否有变化。

您确定 AndIndex(2) 在特定情况下是正确的元素吗?

尝试使用 GetMultiple 并迭代集合以查看您实际拥有哪些图像以及哪些不是离屏图像。

使用 White 实现 WPF 自动化非常困难。试试 Telerik 测试框架,White 可能是支持框架。这样就容易多了。

【讨论】:

    【解决方案2】:

    我不认为缓存是这里的问题。您将获得mainWindowInitializeOption.NoCache。在非缓存模式下,可以按需找到控件。所以我假设缓存是自动刷新的。 (https://github.com/TestStack/White/blob/master/src/TestStack.White/Factory/InitializeOption.cs)

    可能你要点击的元素的索引不是2。 您是否尝试过添加显式等待?听起来您只是尝试添加隐式等待。(https://github.com/TestStack/TestStack.docs/blob/master/_source/White/Advanced%20Topics/Waiting.md)

    【讨论】:

      【解决方案3】:

      可能是焦点问题,在获取图像之前尝试使用它:

      mainWindow.Focus(DisplayState.Maximized);
      

      【讨论】:

        猜你喜欢
        • 2016-05-27
        • 2015-09-19
        • 2018-09-06
        • 1970-01-01
        • 2016-01-11
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        相关资源
        最近更新 更多