2017-07-04 17 views
0

動作しないpage.execute_scriptは()です:カピバラ:私はドラッグをシミュレートし、仕様でRSpecのfeature.Theのexecute_scriptラインでjquery.simulateライブラリを使用してドロップしようとしています

page.execute_script("$('#slide_1').draggable();") 
page.evaluate_script("$('#slide_1').simulate('drag', {dragTarget: '#library_swap', interpolation: {stepWidth: 10, stepDelay: 300 }});") 
page.evaluate_script("$('#slide_1').simulate('drop');") 

私は内側のラインを実行した場合クロムコンソール上でスクリプトを実行すると、うまく動作します(ドラッグドロップのシミュレーションが動作します)が、execute_scriptを使用しない

+0

をexecute_scriptする要素を渡していないことにより、コマンドを乾燥させることができる、あなたはすべてのエラーを取得するか、またはそれはちょうどあなたが期待して何をしないのですか? 2番目と3番目の文に 'evaluate_script'を使っている理由はありますか? –

+0

@ThomasWalpoleいいえエラーは受け付けていませんが、スクリプトは実行されていません。私は、評価スクリプトを使用する前にexecute_scriptを使用しましたが、これらは両方とも機能しません。 – Jaswinder

答えて

0

エラーが発生していないので、execute_scriptに渡すJSコードが実際に実行されています。あなたが期待している振る舞いを見ていないので、最も可能性の高い説明は、エレメントが実際にページに来る前にJSを実行しているということです。コードについて私を混乱させる1つの理由は、要素でdraggableと呼んでいる理由です。なぜなら、あなたのアプリですでに呼び出されていると仮定しているからです。とにかく - あなただけの可能性、あなたはこのための3つの異なるexecute_script呼び出しを使用する必要がいかなる理由があってはならない、要素はページも

expect(page).to have_css('#slide_1') 
execute_script("$('#slide_1')... 

留意の上に実際にあることを確認するために、execute_scriptの呼び出しの前に期待を追加それらをすべて1つにまとめます。カピバラの最近のバージョンであなたも再びセレクタを指定し、代わりに

slider = page.find(:css, '#slide_1') 
execute_script("$(arguments[0]). ... ", slider) 
+0

トマスありがとう。 2番目の行の後にスリープを追加して問題を解決しました。実際にスクリプトは実行されていましたが、UIで作業していないようです。 – Jaswinder

関連する問題