В Selenium Webdriver ExpectedCondition.elementToBeClickable не ожидает, пока индикатор выполнения исчезнет
Этот вопрос похож на приведенный ниже:
то есть как ждать, пока исчезнет индикатор Progress.
Как динамически ждать, пока индикатор загрузки полностью загрузится в Selenium Webdriver?
Мой немного отличается. Здесь, когда появляется индикатор выполнения, все элементы отключены. Поэтому я использую явное ожидание, но все еще получаю исключение.
Сценарий: На странице регистрации, после предоставления всех деталей, скрипт нажимает кнопку «Создать учетную запись». В этот момент появляется круговой индикатор выполнения, который сохраняется в течение 1 или 2 секунд. Если введенный пароль недействителен (проверяется только с недействительными паролями), в верхней части страницы регистрации отображается сообщение об ошибке. Теперь мне нужно нажать на кнопку «Отмена» и повторить процесс.
Когда появится индикатор выполнения, вся страница будет отключена. Только после исчезновения индикатора выполнения пользователь сможет продолжить.
Я написал код для того же, используя WebDriverWait, как показано ниже:
WebDriverWait myWaitVar = new WebDriverWait(driver,20);
После нажатия кнопки «Создать аккаунт» появляется индикатор выполнения, и я жду, пока не появится кнопка «Отмена».
//Click on Create Account btn:
driver.findElement(By.id("createAccount")).click();
//Wait till "Cancel" button is showing up. At cases, it may take some time.
myWaitVar.until(ExpectedConditions.elementToBeClickable (By.id("cancelRegister")));
//click on Cancel btn:
driver.findElement(By.id("cancelRegister")).click();
Когда я выполняю приведенный выше код, каждый раз получаюNoSuchElementException
на последней строке.
Я пробовал сExpectedCondition.visibilityOfElement()
но вот и получаюNoSuchElementException
.
Затем я попытался использовать метод сна вместо ожидания.
Thread.sleep(3000);
Теперь скрипт работает нормально.
Я не мог понять почемуWebDriverWait
не ждал, пока исчезнет индикатор выполнения?
Он успешно проанализировалelementToBeClickable()
но все равно выбрасываю исключение, когда нажимаем на него.