如何使用TestStack.White框架按变量标题查找Window



我正在使用TestStack.White框架在MS Word 2013中自动打开新文档。

我正在用打开Microsoft Word应用程序

   Application application = Application.Launch("winword.exe");

在那之后,我试图通过部分标题获得窗口:

   Window window = application.GetWindow("Word", InitializeOption.NoCache);

但它抛出了一个例外,说没有这样的窗口。

窗口标题为:Document1-Word

问题是:如何通过部分标题获得窗口,考虑到标题每次都在变化:"Document2-Word"、"Document3-Word"等。

也尝试过*Word,但看起来这个函数不支持通配符

如果我调用:列出窗口=应用程序。GetWindows();启动应用程序后,windows列表为空。

提前感谢,Ostap

您可以使用EnumWindows查找所有打开的窗口。

在该回调中,您将获得一个窗口句柄,然后您可以使用GetWindowTextLength和GetWindowText

这将让您决定所需窗口的窗口句柄。从那里,您可以使用GetWindowThreadProcessId来检索word文档的进程ID。

最后,您可以使用application.Start()

创建一个TestStack White应用程序

打开窗口似乎需要一些明显的时间。GUI测试框架通常具有类似Wait()的功能,以确保窗口已经创建/可见/启用。我不是Teststack.White方面的专家。也许这份文档会有所帮助:http://teststackwhite.readthedocs.io/en/latest/AdvancedTopics/Waiting/

public static Window GetWindowBySubstring(this Application app, string titleSubString)
{
    return app.GetWindows().FirstOrDefault(w => w.Title.Contains(titleSubString));
}

相关内容

  • 没有找到相关文章

最新更新