Явное ожидание пропускает выполнение операторов в бесконечном цикле while - PullRequest
0 голосов
/ 17 октября 2019

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

  • Версия Java: 1.8
  • Appium java-клиент: 7.2.0
  • Рабочий стол Appium: 1.13.0
  • Устройство: реальное устройство (Android 7.1.1)

Когда я использую приведенный ниже код,в бесконечном цикле while он пропускает выполнение следующего LOC после этого явного ожидания.

until = new WebDriverWait(androidDriver, 5).until(ExpectedConditions.invisibilityOfElementLocated(loc_progressBar));

Я не уверен, есть ли какие-либо основные концепции, которые мне здесь не хватаетво время реализации явного ожидания или чего-то еще.

  // ************************************************************************************
    public void waitUntilProgressBarisGone() {
    System.out.println("Waiting for progress bar to disappear from Notification Bar...");
    Boolean until;
    while (true) {
        try {
        androidDriver.openNotifications();
        until = new WebDriverWait(androidDriver, 5).until(ExpectedConditions.invisibilityOfElementLocated(loc_progressBar));

        // There is a 3-4 seconds of delay in finishing downloading and start
        // downloading of another app and during this time the progress bar is absent in
        // notification, hence this additional if

        // if notification disappears, then wait for 5 seconds and then again check if
        // it has not came up again, if so continue the loop, else break

        if (until) {

            WebElement we_expandNotification = new WebDriverWait(androidDriver, 5).until(ExpectedConditions.elementToBeClickable(loc_expandGalaxyStoreNotification));

            System.out.println(we_expandNotification);
            if (we_expandNotification != null) {
            we_expandNotification.click();
            continue;
            }

            Thread.sleep(5000);
            until = new WebDriverWait(androidDriver, 5).until(ExpectedConditions.invisibilityOfElementLocated(loc_progressBar));
            if (until) {
            androidDriver.pressKey(new KeyEvent(AndroidKey.BACK));
            break;
            }
        } // end of iff

        } catch (Exception e) {
        continue;
        }
    } // end of loop
    } // end of method

Чего я в основном хочу добиться, так это дождаться, пока индикатор выполнения не исчезнет из Уведомления AUT, однако после 3 уведомлений AUT,все последующие уведомления будут забиты, следовательно, второе явное ожидание.

Кроме того, нет определенного времени, когда этот индикатор выполнения исчезнет, ​​следовательно, он не хотел сохранять жестко запрограммированное время ожидания. .

...