【问题标题】:Problem with datepicker in capybara test水豚测试中日期选择器的问题
【发布时间】:2011-07-19 11:12:34
【问题描述】:

我正在使用 Capybara 1.0.0 进行验收测试,并且非常喜欢它,直到我被困在一个地方。我的问题是我使用了 jQuery datepicker,现在我很困惑如何在我的测试规范中从 datepicker 中选择日期。

任何帮助将不胜感激。

【问题讨论】:

  • 我们遇到了类似的问题,我们的解决方案是在日期选择器文本字段中输入日期,而不是尝试单击日历弹出窗口。理由是我们不想测试 jQuery 代码——我们正在测试我们的代码。 /平底船!
  • 我今天做了同样的事情,甚至不想尝试使用日期选择器本身。另外,我正在为一个工作应用程序编写测试(我知道这很淘气),而且我已经知道日期选择器的功能正常。

标签: ruby-on-rails datepicker bdd capybara


【解决方案1】:

也许测试它是个好主意,因为日期格式在保存到数据库时可能会导致问题。这是我的做法:

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 驱动程序运行。

【讨论】:

  • 使用 page.execute_script %Q{ $('.ui-datepicker-month').val("4") } 选择一个特定的月份(从 0 开始的索引,所以 4 是 May) .同样使用 page.execute_script %Q{ $('.ui-datepicker-year').val("2016") } 选择特定年份。
【解决方案2】:

我不喜欢使用 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[

“as: alt_field.to_sym”是暴露 date_picker 隐藏 alt 字段的原因。然后我可以在 Capybara 中定位 alt 字段输入(由模型处理的字段):

  fill_in 'userdoc[issued_date]', with: "2013-05-02

简单,相当干净,没有 javascript...

【讨论】:

    【解决方案3】:

    看看我的例子,也许对你有帮助

      find("input.form-control.date-mask[ng-model='scope.values.created_at.start']").set(Date.yesterday)
    

    【讨论】:

    • 这看起来像一个 AngularJS 解决方案。你确定这适合这个问题吗?
    【解决方案4】:

    无论出于何种原因,上面的page.execute_script 答案对我不起作用。但是,这是打开日历的一种很老套的方法。

    #trigger opening of calendar    
    fill_in('#auction_event_date', with: "2013-05-01) 
    #select specific day
    click_link("27")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多