Я уже несколько дней вписываю тесты огурца/Capybara в первый раз, и у меня проблемы.Огурцы/Capybara find() не повторяет
У меня есть файл Login.feature
с двумя функциями; один проверяет попытки входа с недопустимыми учетными данными, а другой - с действительными. Первый тест завершается успешно, а последний терпит неудачу.
Я тестирую их, ища Bootstrap alert
, который отображается после каждого типа действия. При неудачном входе в систему страница обновляется предупреждающим сообщением. Успешно пользователь перенаправляется на свою домашнюю страницу, где отображается предупреждение.
Моя проблема заключается в том, что при поиске предупреждения о успешности в тесте с действительными учетными данными он терпит неудачу, потому что страница еще не загружена. Я понимаю, что метод find
должен продолжать искать данный элемент в течение периода времени, определенного Capybara.default_wait_time
.
Ниже приведен простой тест, я использую:
find('div.alert.alert-success')
Это приводит к ошибке Capybara::ElementNotFound
каждый раз. Я установил default_wait_time
на разную длину (самое длинное из 500), но ошибка происходит мгновенно независимо. Я вкопался в код для find
и ввел некоторый вывод, чтобы я мог видеть, продолжает или нет блок в течение этого периода времени - кажется, он пытается разобраться и останавливаться, когда возникает исключение.
Я рассматриваю это неправильно? Из того, что я прочитал, не рекомендуется явно ждать определенного периода времени, но механизм по умолчанию для меня не работает.
Вы пытались использовать 'expect (page) .to has_selector ('div.alert.alert-success')'? или, может быть, 'expect (page) .to has_selector ('# flash_notice')'. Было бы лучше, если бы вы опубликовали свой html-код – fabersky
Какой драйвер вы используете? –
Я тоже попробовал подход 'have_selector', с тем же результатом. Я не уверен, какой драйвер я использую. Я не модифицировал его, поэтому, полагаю, какой бы драйвер не использовался по умолчанию с камнем Cucumber v2.4.0. –