【问题标题】:How can I check that a form field prefilled isn't null using capybara?如何使用 capybara 检查预填充的表单字段是否为空?
【发布时间】:2017-06-15 02:57:54
【问题描述】:
我要检查这个字段,它的值是否为空?
<input name='phone_number' type='text'>
我试过了
expect(@browser.phone_number.value.to_s).exist
expect(@browser.phone_number.value).exist
expect(@browser.phone_number.value).be_truthy
expect(@browser.phone_number).exist
expect(@browser.phone_number).to be_truthy
expect(@browser.phone_number).to exist
但当字段值为空时不会出错
我希望当值不为空时通过场景
当值为空时出错
【问题讨论】:
标签:
ruby
automated-tests
cucumber
capybara
【解决方案1】:
您没有指定 @browser 和 phone_number 是什么,但我会假设它们来自使用 SitePrism 之类的页面对象模型。
当不使用页面对象模型时,这正是:field 选择器的:with 选项的用途。它可以采用正则表达式或字符串来匹配当前字段值。因此,我们可以检查名称为“phone_number”的字段和至少包含一个字符的值
expect(page).to have_field('phone_number', with: /.+/)
如何将该选项与页面对象模型一起使用取决于您实现页面对象模型的方式,但通常归结为最终使用 :field 选择器类型和上述选项调用 find 的实现.如果使用SitePrism 那意味着
class MyPage < SitePrism::Page
...
element :phone_number, :field, 'phone_number' # define phone_number to use the 'field' selector type
end
@browser = MyPage.new
expect(@browser).to have_phone_number(with: /.+/)