如何测试页面是否有日期选择器?

时间:2019-01-18 20:13:48

标签: ruby-on-rails capybara

我正在指定要带有日期选择器的表单。

expect(page).to have_select('Start date')expect(page).to have_select('deal[start_date]')均不返回匹配项。鉴于日期选择器的html有点时髦(name="deal[start_date(2i)]

expect(page).to have_date_select('deal[start_date]')说水豚无法识别has_date_select

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

水豚has_select?谓词和have_select匹配器查找HTML <select>元素。根据日期选择器的含义,您将必须使用匹配正确类型的元素的匹配器,或者如果没有特定的匹配器,则使用have_selector。如果您实际要检查的是一个<input type="date">元素,且其带有包含文本“开始日期”的关联标签,则可以使用have_field匹配器:

expect(page).to have_field 'Start date', type: 'date'

如果您使用的是Rails date_select视图助手,它将生成类似HTML的

<div class="field">
  <label for="post_start_date">Start date</label>
  <select id="post_start_date_1i" name="post[start_date(1i)]">
     <option value="2014">2014</option>
     <option value="2015">2015</option>
     ...
  </select>
  <select id="post_start_date_2i" name="post[start_date(2i)]">
     <option value="1" selected="selected">January</option>
     <option value="2">February</option>
     ...
  </select>
  <select id="post_start_date_3i" name="post[start_date(3i)]">
     <option value="1">1</option>
     <option value="2">2</option>
     <option value="3">3</option>
     ...
  </select>
</div>

通过查看HTML,您可以看到