Wait не работает, элемент не находит, подскажите плз решение

В этой переменной что лежит?

Дайте весь код, а не только один класс. Воспроизведу у себя, на своих ошибках.

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 не может использоваться в таких случаях.

1 Like

Хорошо, спасибо

АААА Заработало!! спасибо!!!

Обращайтесь :slight_smile:

1 Like