水豚测试隐藏领域的价值

时间:2013-01-02 05:14:04

标签: capybara

我有一个包含隐藏字段的表单,其中包含当前日期。

我正在试图弄清楚如何写一个水豚探测器:

  1. 检查字段是否存在
  2. 检查字段的值
  3. Capybara有可能吗?

4 个答案:

答案 0 :(得分:43)

这样做:

find("#id_of_hidden_input", :visible => false).value

答案 1 :(得分:4)

您还可以指示Capybara不要忽略spec_helper.rb中的全局隐藏元素或等效内容。可以覆盖默认行为:

# default behavior for hidden elements
# Capybara.ignore_hidden_elements = false

# find all elements (hidden or visible)
page.all(".articles .article[id='foo']")

# find visible elements only (overwrite the standard behavior just for this query)
page.all(".articles .article[id='foo']", :visible => true)


# changing the default behavior (e.g. in your features/support/env.rb file)
Capybara.ignore_hidden_elements = true

# now the query just finds visible nodes by default
page.all(".articles .article[id='foo']")

# but you can change the default behaviour by passing the :visible option again
page.all(".articles .article[id='foo']", :visible => false)

取自this article的例子。

答案 2 :(得分:2)

很简单,您可以使用find_by_css或使用xpath执行此操作

page.find_by_css('#foo .bar a') #foo is the id the foo has .bar class
page.find('/table/tbody/tr[3]') #path of the element we want to find

答案 3 :(得分:2)

匹配器has_field?也适用于隐藏字段。在这种情况下,无需对findall进行怪异的体操。

page.has_field? "label of the field", type: :hidden, with: "field value"
page.has_field? "id_of_the_field", type: :hidden, with: "field value"

此处的关键是将:type选项显式设置为:hidden

为什么要使用带有隐藏字段的标签?如果您使用的是js库(例如flatpickr),它将隐藏原始文本字段以将其隐藏,这将很方便。不将您的行为测试与特定标记结合在一起总是一件好事。