Я создаю несколько тестов в Selenium с помощью NUnit. У меня проблема с тем, что некоторые из моих кликов не выполняются из-за того, что кнопки не загружаются должным образом. У меня есть ожидание, которое должно подождать, пока кнопки станут активными, но они кажутся кликабельными раньше, чем они есть на самом деле, и щелчок не выполняется. Я вижу, что элемент имеет правильную ссылку href до того, как я нажму, но ничего не происходит.
Статическая задержка перед щелчком действительно «исправляет» это, но это плохое решение, которое замедляет весь процесс тестирования и часто ломается во время стрессовых тестов.
Я почти уверен, что javascript на странице работает медленно и не инициализировался должным образом до щелчка.
Я думал о том, чтобы вместо того, чтобы проверять, доступен ли он для щелчка, вместо этого проверьте, сделал ли щелчок что-нибудь. Я подумал о сопоставлении источника страницы до и после щелчка, но не все щелчки обязательно изменяют html, так что вместо этого просто нарушаются другие тесты.
Вот мой текущий метод щелчка. Хотя ждать, похоже, бесполезно.
public void click(IWebElement element)
{
IsDisplayed(element);
Console.Write("Clicking " + element.GetAttribute("href"));
WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(element));
element.Click();
Console.WriteLine(" ✓");
}
Тест, который регулярно терпит неудачу, - это тот, где я просто открываю страницу и нажимаю кнопку после проверки отображения некоторых элементов.