我有一个带有适当标签的字段,可以毫无问题地用水豚来填充:
fill_in 'Your name', with: 'John'
我想先检查一下它具有的值,然后再弄清楚。
如果我fill_in
在以下行之后添加:
find_field('Your name').should have_content('John')
该测试失败了,尽管正如我通过保存页面验证的那样,之前的填充工作正常。
我想念什么?
我有一个带有适当标签的字段,可以毫无问题地用水豚来填充:
fill_in 'Your name', with: 'John'
我想先检查一下它具有的值,然后再弄清楚。
如果我fill_in
在以下行之后添加:
find_field('Your name').should have_content('John')
该测试失败了,尽管正如我通过保存页面验证的那样,之前的填充工作正常。
我想念什么?
Answers:
您可以使用xpath查询来检查是否存在input
具有特定值的元素(例如'John'):
expect(page).to have_xpath("//input[@value='John']")
有关更多信息,请参见http://www.w3schools.com/xpath/xpath_syntax.asp。
以更漂亮的方式:
expect(find_field('Your name').value).to eq 'John'
编辑:如今我可能会使用have_selector
expect(page).to have_selector("input[value='John']")
如果您正在使用页面对象模式(应该使用!)
class MyPage < SitePrism::Page
element :my_field, "input#my_id"
def has_secret_value?(value)
my_field.value == value
end
end
my_page = MyPage.new
expect(my_page).to have_secret_value "foo"
find_field
其他Node::Finders
用于查找节点并对其执行操作而不是期望。当然,这不是规则,但是对于简单的事情来说,采用内置解决方案是一个更好的主意。只是说!
另一个漂亮的解决方案是:
page.should have_field('Your name', with: 'John')
要么
expect(page).to have_field('Your name', with: 'John')
分别。
另请参阅参考资料。
注意:对于禁用的输入,您需要添加option disabled: true
。
with
给我的只有在值匹配时才返回true,这对我来说是预期的结果。
expected […] but there were no matches. Also found "", which matched the selector but not all filters..
一个空字段,该字段非常接近一个非常好的错误消息。
我想知道如何做略有不同:我想考外地是否有一些价值(同时利用的水豚的能力,重新测试,直到它匹配的匹配)。事实证明,可以使用“过滤器块”来执行此操作:
expect(page).to have_field("field_name") { |field|
field.value.present?
}
.value
一点。谢谢!