我正在使用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
答案 0 :(得分:0)
看起来打开窗口需要一些明显的时间。 GUI测试框架通常具有Wait()等功能,以确保窗口已经创建/可见/启用。我不是Teststack.White的专家。可能这个文件可能会有所帮助:http://teststackwhite.readthedocs.io/en/latest/AdvancedTopics/Waiting/
答案 1 :(得分:0)
您可以使用EnumWindows查找所有打开的窗口。
在该回调中,您将获得一个窗口句柄,然后我们可以使用GetWindowTextLength和GetWindowText
这将让您决定所需窗口的窗口句柄。从那里,您可以使用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));
}