1

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

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

在此先感谢,奥斯塔普

4

3 回答 3

0

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

于 2014-11-01T08:30:41.960 回答
0

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

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

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

最后,您可以使用 Application.Start() 创建一个 TestStack White 应用程序

于 2015-05-01T17:15:02.073 回答
0
public static Window GetWindowBySubstring(this Application app, string titleSubString)
{
    return app.GetWindows().FirstOrDefault(w => w.Title.Contains(titleSubString));
}
于 2019-10-29T19:06:18.343 回答