【问题标题】:C# Teststack.White automating Winforms Menu (ControlType.Menu) which is not child of the main windowC# Teststack.White 自动化 Winforms 菜单(ControlType.Menu),它不是主窗口的子窗口
【发布时间】:2016-05-23 10:40:56
【问题描述】:

我正在使用 Teststack.White 自动化旧版 WinForms 应用程序,但遇到了问题。 右键单击某个项目后显示的菜单,出于某种原因似乎在 UI 层次结构中的主应用程序窗口之外

实现此菜单自动化的最佳方法是什么? 我们的测试框架是围绕窗口层次结构构建的,我们访问的项目是主应用程序窗口的子项。

现在我们通过使用键盘箭头来选择菜单项并单击Enter来解决这个问题(我想这不是最好的解决方案)。

在 Teststack.White 中是否有更好的方法来解决这个问题?谢谢!

【问题讨论】:

  • 原生弹出菜单在应用进程内部,但它是一个和主窗体一样的顶级窗口。我建议使用 process_id 条件搜索它,以免出于性能原因打扰其他进程。我对怀特不熟悉,这只是一个想法。

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


【解决方案1】:

如果您在所有桌面窗口下搜索,您可以找到右键菜单。见以下代码:

//调用函数GetCurrentPopUpMenu

        PopUpMenu pop = GetCurrentPopUpMenu();

        pop.Item("Add Child").Click();

//GetCurrentPopUpMenu函数

    PopUpMenu GetCurrentPopUpMenu()
    {
        List<Window> windows = WindowFactory.Desktop.DesktopWindows();
        foreach (Window w in windows)
        {
            if (w.Name == "") return w.Popup;
        }

        return null;
    }

【讨论】:

  • 感谢您的贡献。我期待某种方法,而无需越过顶级窗口,但是当我现在考虑它时,它可能是唯一可能的解决方案。
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 2013-11-11
  • 2016-11-08
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多