C# WatiN - Добавляет AlertDialogHandler для нажимания ОК кнопки на каждом диалоговом окне Alert

Здравствуйте!

Те, кто использовал WatiN, вероятно, также используемый DialogHandlers.

Хорошо кто-то может учить меня, как я могу присвоить a DialogHandler это обработает любое Окно предупреждений window.alert(), из определенного экземпляра IE под управлением WatiN.

DialogHandler только должен нажать в кнопке OK для очень аварийного диалогового окна, в этом случае я думаю, что нам нужно AlertDialogHandler то в основном единственное должно нажать кнопку OK.

AlertDialogHandler.OKButton.Click()

Я имею поиск сеть и нашел несколько примеров.. Но они работают в течение маленького промежутка времени или времени, которое Вы указываете, мне нужен тот, который будет работать навсегда, пока я не приму решение остановить его путем нажатия кнопки.

Это, как прослушивание моей головы в течение многих часов, любая справка ценится.Спасибо.

Примечание: Иногда аварийное диалоговое окно имеет две кнопки. Вот почему я действительно должен нажать кнопку OK, не только Закрыть диалоговое окно.

10
задан Fábio Antunes 11 August 2010 в 00:11
поделиться

1 ответ

Создать класс:

public class OKDialogHandler : BaseDialogHandler
{
    public override bool HandleDialog(Window window)
    {
        var button = GetOKButton(window);
        if (button != null)
        {
            button.Click();
            return true;
        }
        else
        {
            return false;
        }
    }

    public override bool CanHandleDialog(Window window)
    {
        return GetOKButton(window) != null;
    }

    private WinButton GetOKButton(Window window)
    {
        var windowButton = new WindowsEnumerator().GetChildWindows(window.Hwnd, w => w.ClassName == "Button" && new WinButton(w.Hwnd).Title == "OK").FirstOrDefault();
        if (windowButton == null)
            return null;
        else
            return new WinButton(windowButton.Hwnd);
    }
}

После создания экземпляра IE прикрепите к нему обработчик диалогового окна:

ie.AddDialogHandler(new OKDialogHandler());

Этот диалог обработчик будет обрабатывать все окна, содержащие кнопку с надписью «ОК», нажав на эту кнопку.

17
ответ дан 3 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: