Почему таймер Capybara «ждать загрузки страницы» работает для сопоставителей, а не для поиска? - PullRequest
4 голосов
/ 07 октября 2011

В настоящее время я запускаю тест, который проверяет определенный элемент, а затем что-то делает с ним.Элементу требуется немного времени, чтобы javascript завершил работу, но в течение таймера я установил Capybara.

По некоторым причинам

assert session.has_xpath?(xpath_route)

работает нормально, но

assert link=session.first(:xpath, xpath_route)

терпит неудачу, говоря, что не может найти элемент.И быстро - задолго до того, как таймер ожидания закончится.

Я могу только предположить, что это означает, что таймер применяется только к сопоставителям, а не к искателям, что хорошо, но как я могу заставить его продолжать искать, пока не найдетэлемент, который я ищу?

1 Ответ

5 голосов
/ 08 октября 2011

Вы правы, предполагая, что время ожидания не применяется при использовании first.Но вы можете использовать метод wait_until, который будет повторять попытки до истечения времени ожидания или до тех пор, пока блок не вернет что-то правдивое, поэтому:

page.wait_until() do
  session.first(:xpath, xpath_route)
end
...