如何使用TestStack.White和C#获取弹出窗口

时间:2016-12-15 18:59:23

标签: c# wpf automation ui-automation white

我是C#和TestStack.White的新手,

我正在测试的应用程序(尝试....)是一个WPF应用程序。

我有一个带弹出子窗口的窗口,我想关闭它。

我对那些弹出窗口没有AutomationId :(

我有MainWindow和MainWindow.HasPopup()返回true:)

但是我不知道要从我的MainWindow获取(TestStack.White.UIItems.WindowItems.Window)列表,所以我可以这样做: Foreach _windItem ... _windItem .Close();

提前致谢!

EyalS。

1 个答案:

答案 0 :(得分:0)

Window上应该有Popup属性。 HasPopup实际上正在检查弹出属性。我认为更好的方法是向应用程序询问所有窗口,然后关闭所有窗口,除了具有将其指定为主窗口的属性的窗口。以下是White中的示例,了解如何执行此操作。

Application application = Application.Launch("Path to Application");
foreach (Window window in application.GetWindows())
{
    if (window.AutomationElement.Current.AutomationId == "MainWindow") continue;
    window.Close();
}

我还建议调查FlaUI,因为FlaUI的API使得获取AutomationElement中的信息变得更加容易,而不必将依赖项添加到White正在包装的底层框架中。 Plus White有许多属性不会像你认为的那样以Popup属性的方式工作。