Watin - Обработка подтверждает диалоговые окна с ConfirmDialogHandler

Есть лучший способ, чем использование BroadcastReceivers:

// If you use API20 or more:
DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
for (Display display : dm.getDisplays()) {
    if (display.getState() != Display.STATE_OFF) {
        return true;
    }
}
return false;

// If you use less than API20:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
if (powerManager.isScreenOn()){ return true; }

Обратите внимание, что Display.getState() также может возвращать STATE_DOZE и STATE_DOZE_SUSPEND, что означает, что экран включен особым образом. Больше информации о Display.getState() и его возвращаемых значениях здесь: http://developer.android.com/reference/android/view/Display.html#getState ()

Также обратите внимание, что хотя официальная документация рекомендует использовать isInteractive() вместо isScreenOn(), если вы действительно хотите знать состояние экрана, лучше выбрать Display.getState() из-за «особых» условий, при которых экран включается, пока устройство не интерактивный.

15
задан Cheran Shunmugavel 9 December 2012 в 06:33
поделиться

1 ответ

Мне кажется, что код подходит, и Думаю, должно сработать. Единственное, что я сделал иначе, так это то, что я поместил Wait for Complete внутрь блока Dialog. Не знаю, почему, но до того, как я это сделал, у меня тоже были проблемы, иногда это работает, иногда нет. И я не t использовать ограничение по времени в «Подождать, пока не существует». Но вы, вероятно, уже пробовали это.

Например:

using (new UseDialogOnce(ie.DialogWatcher, approveConfirmDialog))
        {
            ie.Button(Find.ByName("btn")).ClickNoWait();
            approveConfirmDialog.WaitUntilExists();
            approveConfirmDialog.OKButton.Click();
            ie.WaitForComplete();
        }
11
ответ дан 1 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

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