次のように実行スクリプトを呼び出すテストに本当に簡単な行があります。
puts page.execute_script("return somefunction();").to_i.inspect
そしてJavaScriptでは私はこのような関数を持っています:
function somefunction(){
console.log("test");
return 999;
}
コンソールログの「テスト」がログアウトされているため、実行されています...
テストの実行時にログを確認すると、execute_scriptは999ではなく0を返します。そのため、rspecで関数からの戻り値を取得できません。page.execute_scriptでその関数からその値を返すにはどうすればよいですか?
Poltergeistドライバーは execute_script
に対してnilを返すように設計されています:
def execute_script(script)
browser.execute(script)
nil
end
evaluate_script
を使用した場合にのみPoltergeistが値を返します。
def evaluate_script(script)
browser.evaluate(script)
end
カピバラにはそれぞれに対応するメソッドがあります。つまり、 Session#execute_script
および Session#evaluate_script
です。 evaluate_script
を使用するように切り替えると、コードは機能するはずです(@AndreyBotalovが指摘しているように、return
も削除する必要があります)。
puts page.evaluate_script("somefunction();").to_i.inspect