В этой переменной что лежит?
Дайте весь код, а не только один класс. Воспроизведу у себя, на своих ошибках.
В этой переменной что лежит?
Дайте весь код, а не только один класс. Воспроизведу у себя, на своих ошибках.
Yelena, посмотрел проект.
Всё оказалось намного прозаичнее.
Проблема в том, что у вас на странице входа отображается (т.е. выполняет условие Displayed
) только две ошибки из коллекции.
Визуально при этом на странице вообще видна только одна.
Последняя ошибка скрыта.
Именно по этой причине у вас ожидание по сути будет просто вечным.
Вы можете в этом убедиться сами, изменив код функции на следующий и поставив брэйкпоинт на displayedErrors
:
public string IsDisplayed(By locator, int avgWaitTime, int i)
{
try
{
wait = new WebDriverWait(driver, TimeSpan.FromMinutes(avgWaitTime));
var errorMessages = wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(
By.XPath("//*[contains(@class, \'fc-vip-error-msg\')]")));
//wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//*[contains(@class, \'fc-vip-error-msg\')]")));
var displayedErrors = errorMessages.Count(error => error.Displayed);
var msgCount = errorMessages.Count;
Assert.That(msgCount, Is.EqualTo(3));
return errorMessages[i].Text;
}
catch (WebDriverTimeoutException)
{
return "Damn";
}
}
Я изменил вам ассерт, т.к. Assert.Equals не может использоваться в таких случаях.
Хорошо, спасибо
АААА Заработало!! спасибо!!!
Обращайтесь