我正在使用Capybara 1.0.0进行验收测试,并且一直很喜欢它,直到遇到一个问题。我的问题是我已经使用了jQuery日期选择器,但现在我不知道如何在我的测试规范中从日期选择器中选择日期。
如果有任何帮助,将不胜感激。
我正在使用Capybara 1.0.0进行验收测试,并且一直很喜欢它,直到遇到一个问题。我的问题是我已经使用了jQuery日期选择器,但现在我不知道如何在我的测试规范中从日期选择器中选择日期。
如果有任何帮助,将不胜感激。
也许测试一下是个好主意,因为日期格式可能会在保存到数据库时出现问题。这是我的做法:
page.execute_script %Q{ $('#auction_event_date').trigger("focus") } # activate datetime picker
page.execute_script %Q{ $('a.ui-datepicker-next').trigger("click") } # move one month forward
page.execute_script %Q{ $("a.ui-state-default:contains('15')").trigger("click") } # click on day 15
测试必须使用JavaScript驱动程序运行。
我不喜欢使用JavaScript。如果Rails.env.test?,我只需公开alt字段,并直接使用Capybara定位alt。
我创建了一个帮助方法来生成日期选择器输入和隐藏字段(有点长,我认为没有必要全部展示)。在该方法中,我使用:
def date_picker(options={})
alt_field = Rails.env.test? ? "string" : "hidden"
input = "#{ options[:f].input options[:field], as: alt_field.to_sym, input_html: {id: "#{options[
fill_in 'userdoc[issued_date]', with: "2013-05-02
简单、干净,无需JavaScript...
看一下我的例子,或许可以帮到你
find("input.form-control.date-mask[ng-model='scope.values.created_at.start']").set(Date.yesterday)
在辅助函数中:
def fill_flatpickr_time_field(selector, value)
page.execute_script "$('#{selector}').val('#{value}')"
end
测试示例:
fill_flatpickr_time_field('#article_calendar_end_time', '08:00')
出于某种原因,上面的page.execute_script
答案对我不起作用。然而,这是一个取巧的方法来打开日历。
#trigger opening of calendar
fill_in('#auction_event_date', with: "2013-05-01)
#select specific day
click_link("27")