Я пытаюсь подождать, пока WebElement не изменится с пустого на сообщение 1, затем сообщение 2. Проблема в том, что я нахожу первое сообщение каждый раз, но не могу дождаться второго (время ожидания истекло). ищу текст)
Я пытался разделить объекты ожидания, которые не работали. Я попробовал несколько методов ожидаемого условия (textToBePresent *), которые после некоторого прочтения (я нашел об обновленном EC) безрезультатно.
@FindBy(xpath="//p[@class='statusText']")
WebElement statusMsg
public WebElement statusMsg(){
String msg1="Logging in, please wait."
String msg2="Login successful, please wait."
String msg3="Login attempt exception, error code: "
if(statusMsg.getText().contains(msg3)){
log.error(statusMsg.getText())
log.error("Something happened in the frontend")
Assert.fail(statusMsg.getText())
}else{
log.info(statusMsg.getText())
}
WebDriverWait wait = new WebDriverWait(driver,45)
wait.until(ExpectedConditions.textToBe(By.xpath("//p[@class='statusText']"), msg1))
if(statusMsg.getText().contains(msg3)){
log.error(statusMsg.getText())
log.error("Something happened in the backend")
Assert.fail(statusMsg.getText())
}else{
log.info(statusMsg.getText())
}
wait.until(ExpectedConditions.refreshed(ExpectedConditions.textToBe(By.xpath("//p[@class='statusText']"), msg2)))
log.info("Found: "+msg2)
return statusMsg
}
В результате testNG провалил мой тест, сказав:
org.openqa.selenium.TimeoutException: ожидаемое условие не выполнено: ожидание условия (элемент, найденный By.xpath: // p [@ class = 'statusText'] имеет текст «Вход в систему выполнен успешно, пожалуйста, подождите». ". Текущий текст:" Войдите в систему, пожалуйста, подождите. ")
И все же я вижу msg2
во время выполнения теста. Это нужно сделать, потому что я уже инициализировал объекты страницы через PageFactory.initElements(driver, this)
?