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

时间:2014-10-30 13:14:47

标签: ui-automation office-automation white gui-test-framework

我正在使用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但看起来这个func不支持通配符

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

提前致谢, Ostap

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

在该回调中,您将获得一个窗口句柄,然后我们可以使用GetWindowTextLengthGetWindowText

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

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

创建一个TestStack White应用程序

答案 2 :(得分:0)

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