Всем привет. Использую цикл, в котором ввожу данные пользователя и сохраняю документ.
Если введённое значение почты уже имеется в системе, выскакивает модальное окно с предупреждением.
Отображение данного окна я вынес в блок while(…isDisplayed);
Но, в моменте , когда данное окно не возникает, данный блок while ловит исключение NoSuchElementException.
Почему так может происходить? Ведь, по идее, условие, при котором цикл работал, должно выполниться в блоке while (окно уже НЕ отображается) , и выйти из цикла… Как можно обойти данную ситуацию без обработки исключений?
Код
do {
driver.findElement(By.xpath("/html/body/div[4]/div/div/div[3]/button")).click();
i++;
driver.findElement(By.name("email")).clear();
driver.findElement(By.name("email")).sendKeys("ads" + i + "@ads.com");
driver.findElement(By.name("name")).clear();
driver.findElement(By.name("name")).sendKeys("ads" + i + "");
driver.findElement(By.xpath("/html/body/div[3]/div[6]/div/div[2]/form/div[16]/button[1]")).click();
} while (driver.findElement(By.xpath("/html/body/div[6]/div/div/div[3]/button")).isDisplayed());
ну так у вас в while найти элемент, тут вы и падаете, даже до isDisplayed не доходите
то есть элемент должен быть уже найден, чтобы применять к нему isDisplayed ?
как правильно в данной ситуации выйти из цикла, когда окно не отображается?
Во-первых, качество локаторов к вопросу не относится. Это тестовый пример. Я мог бы их и пустые оставить, не знал, что тут такие токсичные пользователи сидят.
Во-вторых, цикл нужен для автоматизации, при вызове тестового метода каждый раз будут создаваться уникальные пользователи. Так надо. Это не обсуждается. Все виды ожиданий используются в других кейсах. Поэтому вопрос про цикл.
Если не можете помочь с ответом или не желаете, лучше ничего не пишите в теме, пусть она будет пустой. Учитесь корректно взаимодействовать с пользователями, и люди к вам потянутся.