Как найти Window по заголовку переменной, используя TestStack.White Framework?
Я использую TestStack.White Framework для автоматизации открытия нового документа в MS Word 2013.
Я открываю приложение Microsoft Word с:
Application application = Application.Launch("winword.exe");
После этого я пытаюсь получить окно с частичным заголовком:
Window window = application.GetWindow("Word", InitializeOption.NoCache);
Но это исключение говорит о том, что такого окна нет.
Заголовок окна: Документ1 - Слово
Вопрос в том, как получить окно по частичному заголовку, учитывая, что заголовок меняется каждый раз: "Document2 - Word", "Document3 - Word" и т. Д.
Также пробовал *Word, но похоже, что этот func не поддерживает подстановочные знаки
Если я вызываю: List windows = application.GetWindows(); после запуска приложения список окон пуст.
Заранее спасибо, Остап
2 ответа
Похоже, что открытие окна занимает некоторое заметное время. Платформы тестирования 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));
}
Вы можете использовать EnumWindows, чтобы найти все открытые окна.
В рамках этого обратного вызова вы получите дескриптор окна, который вы затем можете использовать с GetWindowTextLength и GetWindowText
Это позволит вам решить, какой дескриптор окна для окна вы хотите. Оттуда вы можете использовать GetWindowThreadProcessId, чтобы получить идентификатор процесса для документа word.
И, наконец, с этим вы можете создать приложение TestStack White, используя Application.Start()