Как бы вы проверили, обновлен ли конкретный WebElement?
У меня есть тест, который выполняет сохранение формы, а затем пользовательский интерфейс возвращает сообщение об успехе / ошибке.
Я делаю серию сохранений, и мне нужно проверить, соответствует ли сообщение ожидаемому.
Selenium работает так быстро, что браузер не успевает его догнать.
Это код, который у меня есть для проверки сообщения об ошибке (также есть эквивалентная функция сообщения об успешном завершении)
public void assertErrorMessage(String errorMsg) {
// set the wait time a bit so the page can load.
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
List<WebElement> results = driver.findElements(By.xpath("//div[@id='lift__noticesContainer__']/descendant::*"));
boolean success = false;
String message = "";
for (WebElement result : results) {
String id = result.getAttribute("id");
if (id.contains("___error")) {
success = true;
}
if (result.getTagName().equals("li")) {
message += result.getText().trim();
}
}
Assert.assertTrue(success, "No error message generated");
Assert.assertTrue(message.equals(errorMsg), "Expecting message: \"" + errorMsg + "\" but got \"" + message + "\"");
}
По мере написания он ищет наличие определенного <div>
и проверяет, содержит ли он определенные атрибуты. Если это так, получите сообщение.
Дело в том, что это всегда будет правдой, и, следовательно, мои тесты терпят неудачу, поскольку сообщение отличается от предыдущего, но пользовательский интерфейс не догнал селен.
Мое решение пока заставить Thread.sleep (2000) просто немного приостановиться, чтобы пользовательский интерфейс догнал. Я знаю, что использование Thread.sleep () не одобряется.
то есть (псевдокод)
page.setField("value");
page.save();
Thread.sleep(2000);
page.assertErrorMessage("Error message");
Есть ли способ проверить, обновлен ли WebElement? Если это так, я мог бы использовать Selenium waits, чтобы проверить это.
Или, возможно, у кого-то есть предложение, как это сделать?
Заранее спасибо.