Кто-нибудь успешно запускает тесты уровня регрессии в приложениях React-admin, использующих Selenium WebDriver?
Похоже, что единственный способ добиться успеха в этой среде - это явное ожидание почти каждого предпринимаемого вами взаимодействия. Возможно, это нормально для Selenium, поскольку я, конечно, не эксперт в этой области.
DOM настолько динамичен c, что мне интересно, подходит ли Selenium для веб-приложений, написанных в React-Admin? Буду признателен всем экспертам, которые захотят поделиться своим мнением об этой теме c.
Я поделюсь своим последним примером, чтобы узнать, может ли кто-то понять, что я делаю неправильно.
@ Test1 1) Проверка существования таблицы 1a) Если таблица существует, удалить все элементы из таблицы
@ Test2 2) Создать новый элемент 2a) Заполнить все поля, связанные с созданием нового элемента 2b ) Нажмите кнопку «Отправить», чтобы сохранить новый элемент. 3) Вернуться на страницу с таблицей элементов.
Когда я запускаю эти два теста, они оба проходят, и все замечательно.
Однако они проходят, только если таблица не существует (нет элементов в таблице) до их запуска. Если в таблице существуют ЛЮБЫЕ элементы, то происходит следующее:
@ Test1, кажется, работает нормально, и я вижу, что флажок «Выбрать ВСЕ» на таблице отмечен, все элементы удаляются, и таблица ясна.
Затем, когда он переходит к @ Test2, я попадаю во 2-е поле процесса создания элемента (это выпадающее меню, в результате которого создается новый ul с множеством элементов li, созданных в DOM), и приложение блокируется индикатором прогресса, показывающим, где обычно находится это раскрывающееся меню, и мой тест в конечном итоге не проходит.
Я перепробовал почти все условия, доступные в условиях явного ожидания, и продолжаю получать тот же результат.
Я также пытался использовать следующий код в начале каждого теста, чтобы убедиться, что страница полностью загружена, но, честно говоря, я не знаю, применяется ли это даже при тестировании на React.
public void waitForPageLoad(WebDriver driver) {
ExpectedCondition<Boolean> pageLoadCondition = new
ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
}
};
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(pageLoadCondition);
}
Если у кого-то есть какие-либо мысли, отзывы, предложения, что-нибудь - по этому поводу, я был бы очень признателен.
Спасибо! Боб