我如何检查表单字段使用水豚正确预填?(How can I check that a form fie

2019-07-29 07:24发布

我有一个适当的标签,我可以豚填补没有问题的字段:

fill_in 'Your name', with: 'John'

我想在灌装之前检查它的价值并不能弄明白。

如果我的后面添加fill_in以下行:

find_field('Your name').should have_content('John')

该测试失败,虽然填充,因为我已经被保存页面验证之前的工作。

我在想什么?

Answer 1:

您可以使用XPath查询来检查,如果有一个input与特定值(例如“约翰”)元素:

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"


Answer 2:

一个漂亮的解决办法是:

page.should have_field('Your name', with: 'John')

要么

expect(page).to have_field('Your name', with: 'John')

分别。

另请参阅参考 。

:为残疾人投入,你需要添加选项disabled: true



Answer 3:

如果你特别想测试一个占位符,使用方法:

page.should have_field("some_field_name", placeholder: "Some Placeholder")

要么:

expect(page).to have_field("some_field_name", placeholder: "Some Placeholder")

如果你想测试用户输入的值:

page.should have_field("some_field_name", with: "Some Entered Value")


Answer 4:

我想知道如何做略有不同:我想考外地是否有一定的价值(同时利用的水豚的重新测试,直到它匹配的匹配能力 )。 事实证明,这是可以使用“过滤块”来做到这一点:

expect(page).to have_field("field_name") { |field|
  field.value.present?
}


文章来源: How can I check that a form field is prefilled correctly using capybara?