Mar*_*lar 14 minitest capybara ruby-on-rails-3
我有一个form_tag,生成以下HTML:
<form accept-charset="UTF-8" action="http://www.example.com/product_page" id="dates_form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div>
Min date: <input id="datepicker_mini" name="datepicker_mini" type="text" />
Max date: <input id="datepicker_maxi" name="datepicker_maxi" type="text" />
</form>
Run Code Online (Sandbox Code Playgroud)
以上是所有生成的HTML.我已经删除了任何部分和布局,以尽可能简单地调试此问题.
datepicker字段调用jquery UI datepicker.
我想避免我的测试javascript,只需用文本日期填写日期字段.我已经尝试了fill_in "datepicker_mini", :with => "01/01/2010"但是虽然它不会导致测试失败但是当我save_and_open_page用来测试时它也没有填写该字段.
更新:测试代码
it "runs report" do
login_test_user
within("#dates_form") do
fill_in "datepicker_mini", :with => "01/01/2010"
fill_in "datepicker_maxi", :with => "01/01/2020"
end
save_and_open_page
end
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
谢谢.
Arm*_*ndo 23
我有同样的问题.在阅读了capybara的文档后,我的解决方案是使用page.execute_script()直接为输入设置一个值.
## fill_in "person_birthdate, with: "21/12/1980"
page.execute_script("$('#person_birthdate').val('21/12/1980')")
Run Code Online (Sandbox Code Playgroud)
我认为这有点脏,但对我有用.
陷阱:
编辑:这也适用于Poltergeist
我喜欢这个解决方案:
page.execute_script("$('#show_sale_date').datepicker('setDate', '01/01/2010')")
Run Code Online (Sandbox Code Playgroud)
摘自http://api.jqueryui.com/datepicker/#method-setDate
如果你想模拟UI点击,这对我有用(使用javascript驱动程序).
当我的datepicker的ID是'target_date'时,导航到下个月,然后选择第15个.
page.execute_script %Q{ $('#target_date').trigger('focus') }
page.execute_script %Q{ $('a.ui-datepicker-next').trigger('click') }
page.execute_script %Q{ $('a.ui-state-default:contains("15")').trigger('click') }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9284 次 |
| 最近记录: |