Specflow получение модального окна занимает много времени - PullRequest
0 голосов
/ 05 июня 2018

В настоящее время я пишу автотесты для приложения WPF и столкнулся с проблемой, заключающейся в том, что получение несуществующего окна занимает много времени (по крайней мере, 1 минута для каждого автотеста, что недопустимо).

У меня естьдиалоговое окно сохранения файла, которое иногда открывается.Чтобы не мешать другим сценариям, я должен закрыть такое окно при демонтаже.

Проблема в том, что если такое окно не существует (например, оно было закрыто), попытка получить его занимает по крайней мереминута по каждому сценарию.Можно ли заставить его работать лучше?

public Window SavePrintOutputWindow
    {
        get
        {
            try
            {
                var printingScreen = MainScreen.ScreenWindow.ModalWindow("Printing");
                var saveOutputWindow = printingScreen.ModalWindow("Save Print Output As");
                return saveOutputWindow;
            }
            catch (Exception e)
            {

                return null;
            }
        }
    }

1 Ответ

0 голосов
/ 07 июня 2018

Получение окна с использованием Get<WindowedAppScreen>("Printing", InitializeOption.NoCache) также было медленным.Решил это, используя информацию из здесь .

Нет необходимости измерять точную производительность, но она работает достаточно быстро для меня.

Теперь мой код выглядит так:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
public Window SavePrintOutputWindow
{
    get
    {
        try
        {
            IntPtr hWnd = FindWindow(null, "Save Print Output As");
            if (hWnd == IntPtr.Zero)
            {
                 return null;
            }
            var printingScreen = MainScreen.ScreenWindow.ModalWindow("Printing");
            var saveOutputWindow = printingScreen.ModalWindow("Save Print Output As");
            return saveOutputWindow;
        }
        catch
        {
            return null;
        }
    }
}

Надеюсь, это кому-нибудь поможет.

...