Как найти 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()

Другие вопросы по тегам