Capybara - 如何单击由javascript启用的按钮,同时将其初始化为禁用



>我有一个只有一个输入框和一个提交按钮的表单,其中提交按钮被禁用,直到用户在文本框中填写某些内容。

不幸的是,当我检查屏幕截图"form.png"时,即使我已经填写了一个值,提交按钮仍然被禁用。

规范:

scenario 'valid', js: true do
  fill_in 'Name', with: 'Hello World'
  page.save_screenshot('form.png')
end

咖啡/JS:

$('#name').keyup ->
  if $('#name').val() != ''
    $('#submit').removeClass('disabled').removeAttr('disabled')
  else
    $('#submit').addClass('disabled').attr('disabled', 'disabled')

Haml/html:

= f.input :name, label: 'Name'
= f.submit 'Save', class: 'btn btn-primary form-btn', id: 'submit', disabled: true

Poltergeist 在填写输入文本字段时肯定会产生 keydown/keyup 事件,所以听起来你的 JS 没有运行。确保你没有任何依赖于大于 ES5 的功能的 JS 代码,因为 PhantomJS 不支持它或错误。 在测试模式下,所有 JS 资产都会连接起来,这意味着任何一个文件中的错误都可能阻止评估其他文件中的代码。一旦你清理了它,你应该能够做到

click_button 'Save'

最新更新