Я пытаюсь написать тест огурца на страницу, содержащую датупик. Клянусь, вчера это работало, но не так много сегодня.cucumber capybara test date picker выбирает неправильный день
Then(/^select date (\d+) day(?:s|) prior to today$/) do |n|
day=Date.today-(n.to_i)
target = Date.strptime("#{day}",'%Y-%m-%d')
target_month_year = target.strftime('%B %Y')
selected_month_year = (find('.datepicker-switch').native.text)
unless target_month_year == selected_month_year
find('.prev').click
sleep 1
end
find('.day', :text => "#{day.day}", match: :prefer_exact).click
sleep 2
end
Затем у меня есть отдельный тест, который проверяет правильность даты после выбора. Я проверил, что day.day дает мне правильный результат, включая puts (day.day), а также все остальные переменные. Я думаю, проблема связана с совпадающей проблемой, сегодняшняя дата - 04/24/2015, и я выбираю 15 дней назад. Таким образом, datepicker, который отображает месяц и год выше и позволяет вам выбрать предыдущий или следующий, то показанные дни соответствуют количеству дней в этом конкретном месяце. и несколько дней до и после. дни за предыдущий месяц - это класс = «старый день», а те, которые отображаются за месяц, - class = «day», а для следующего месяца class = «новый день». поэтому месяц, который я хочу, - апрель, а день - девятый. он продолжает выбирать 29 марта. который является первым днем, указанным на странице, содержащей «9». но класс неправильный, так как я хочу «день» не «старый день», а день неправильный, потому что я хочу «9», а не «29», я даже поставил a: prefer_exact, потому что он зафиксировал сопоставление неправильного элемента в прошлом для меня.
Не уверен, что попробовать дальше. Любые советы очень оценили.
огурец 1.3.10
Капибара 2.4.1
рубин 1.9.3p551
Спасибо! Я пробовал то, что вы изначально разместили, и по какой-то причине формат 'find ('. Day', текст: Regexp.new ("^# {day.day} $ "), match:: prefer_exact) .click' дал мне ошибку не нашел css с текстом/^ 9 $/ , но когда вы обновили ответ, и я попробовал ': text =>' он работал. спасибо! –
Жаль об этом; Я перечислил неправильный селектор CSS изначально. Рад, что это сработало для вас! Я надеюсь, что у нас будет лучшее решение для точного соответствия текста в capybara, но регулярное выражение должно работать до тех пор. – tgf
У меня была другая, но подобная проблема, и я нашел этот вопрос/ответ, и это тоже сработало! вы помогли мне дважды. Для всех, у кого есть аналогичная проблема: во втором случае я пытался сопоставить переключатель с меткой «Одно событие за», а затем рядом с ним есть текстовое поле для ввода вашего значения и единиц. Но есть также два дополнительных переключателя с надписью «Одно событие на всю жизнь» и «Одно событие в месяц». Я продолжал получать двусмысленный матч, даже с совпадением:: prefer_exact. Я использовал Regexp.new, и он выбрал правильный. –