Я использую Capybara и Poltergeist и не могу ни за что пройти все мои тесты. У меня есть одна проблема, в частности, с селектором даты. Это должно быть очень просто - пользователь нажимает на вход, на выходе выбирает месяцы (первое изображение). Затем щелкают месяц, после чего появляется выбор дня (второе изображение), на котором выбирается день месяца.
Теперь мой код выглядит следующим образом:
all(:css, 'input.from_date').last.click
expect(page).to have_css(".datepicker-months")
within(:css, '.datepicker-months') { find('.month', :text => 'Jun', match: :first).click }
expect(page).not_to have_css(".datepicker-months")
expect(page).to have_css(".datepicker-days")
within(:css, '.datepicker-days') { find('.day', :text => work[:start_date].stamp('31').to_i.to_s, match: :first).click } #.to_i.to_s used to remove leading zeros
page.assert_no_selector('.datepicker-days')
Иногда проходит, но чаще говорит:
expected to find css ".datepicker-days" but there were no matches
or
expected not to find css ".datepicker-months", found 1 match: "« 2015 » JanFebMarAprMayJunJulAugSepOctNovDec"
Если я попытаюсь отладить это, вызвав bind.pry, я смогу выполнять команды шаг за шагом в консоли, и все работает отлично. Мой тайм-аут установлен более чем достаточно (я думаю). Любые идеи, почему этот тест периодически терпит неудачу?
Моя конфигурация:
Capybara.javascript_driver = :poltergeist
Capybara.default_wait_time = 60
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {
timeout: 60,
js_errors: false,
phantomjs_logger: File.open("log/phantomjs.log", "a")})
end
ОБНОВЛЕНИЕ:
При добавлении sleep(0.5) после каждого шага процесса он проходит каждый раз. Это плохая практика, и я должен писать тесты, не делая этого. :/
page.execute_script
, но это все еще не очень последовательно. - person Vidur   schedule 26.03.2016