У меня есть тесты E2E (с использованием Selenium WebDriver) для приложения Angular 4 / ASP.NET Core Web API.
У меня иногда возникают проблемы с таймаутом / ожиданием в некоторых тестах.
В инфраструктуре E2E есть метод WaitForAngular (), который использует некоторый Javascript (взятый из Protractor), который ждет, пока Angular покажет, что он загрузил все «тесты», прежде чем продолжить (см. https://stackoverflow.com/a/39349865/95423)
Однако это не так)Это кажется абсолютно надежным, и время от времени мы получаем неопределенное время ожидания.
Другой подход, который мы используем, - это неявное ожидание визуализации рассматриваемого элемента:
var url = "targetURL"
Driver.Instance.Navigate().GoToUrl(url);
var waitSeconds = 15;
var navWait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(waitSeconds))
{
Message = $"The targetURL failed to load in {waitSeconds} seconds"
};
navWait.Until(x => x.FindElementById(targetUrlId) != null || x.FindElementById(forbiddenId) != null);
IЯ вижу более надежные результаты второго подхода, однако это означает больше кода и, возможно, более хрупкие тесты, если условие неявного ожидания не будет тщательно продумано.
Какой подход лучше или естьальтернатива?