2017-11-16 2 views
0

私は1つの入力ボックスと、ユーザがテキストボックスに何かを記入するまで、送信ボタンが無効になっている送信ボタンを持つフォームを持っています。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 

答えて

0

ポルターガイストは間違いなく、KeyDownイベント/ keyUpイベントイベントを生成しますあなたのJSが実行されていないように聞こえる。 PhantomJSはそれをサポートしていないので、ES5以上の機能に依存するJSコードがないことを確認してください。テストモードでは、すべてのJSアセットが連結されます。つまり、あるファイルのエラーが他のファイルのコードの評価を妨げる可能性があります。あなたはクリーンアップすることを持っていたら、ちょうど「PhantomJSがそれをサポートしていないため、あなたはES5より大きい機能に依存して任意のJSコードを持っていないことを確認し、またはエラー」

click_button 'Save' 
+0

を行うことができるはず。これをどのように追跡できますか? –

+0

@PirunSengまず、あなたのポラテジストの設定(https://github.com/teampoltergeist/poltergeist#customization)で 'js_errors'を有効にしてから、多くのエラーを捕捉してください。それを超えると、あなたがJSファイルに 'let'や' const'を使用していないことを確認します。残念ながら、ファイルは無視されます。もしあなたがそうであれば、Poltergeist/PhantomJSを使うためには書き換えやトランシルル化とポリフィルが必要です –

+0

私は既にjs_errorsオプションを持っていました。 JSファイルの中に 'let'と' const'のどちらも持っていません。しかし、私の** form-b​​uilder.min.js **にこの行 '// https:// people.mozilla.org /〜jorendorff/es6-draft.html#sec-generatorresume'が見つかりました**しかし、私はそれを信じていますコメントされています。あなたは私が呼び出されると予想されるJSファイルにエラーコードを作成しようとしたときに、いくつかのファイルが無視されるかもしれないと言っているかもしれませんし、仕様を実行したときに構文エラーは発生しませんでした。 –

関連する問題