Возможный дубликат 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,все последующие уведомления будут забиты, следовательно, второе явное ожидание.
Кроме того, нет определенного времени, когда этот индикатор выполнения исчезнет, следовательно, он не хотел сохранять жестко запрограммированное время ожидания. .