我正在使用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()
打开窗口似乎需要一些明显的时间。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));
}