ruby on rails - tutorial - ¿Cómo devolver un valor cuando se utiliza execute_script en capybara?
rails 5 rspec (1)
El controlador Poltergeist está diseñado para devolver nil para execute_script
:
def execute_script(script)
browser.execute(script)
nil
end
Poltergeist solo devolverá un valor si usas el evaluate_script
:
def evaluate_script(script)
browser.evaluate(script)
end
Capybara tiene métodos correspondientes para cada uno, es decir, Session#execute_script
y Session#evaluate_script
Session#execute_script
. Tu código debería funcionar si cambias a usar eval_script (y como lo señala @AndreyBotalov, también debes eliminar la return
):
puts page.evaluate_script("somefunction();").to_i.inspect
Tengo una línea realmente simple en una prueba que llama a ejecutar un script como este:
puts page.execute_script("return somefunction();").to_i.inspect
Y en javascript tengo una función como esta:
function somefunction(){
console.log("test");
return 999;
}
La ''prueba'' del registro de la consola se está desconectando, por lo que se está ejecutando ...
Al observar los registros al ejecutar la prueba, execute_script devuelve 0 no 999, por lo que en rspec no puedo obtener el valor de retorno de la función, ¿cómo hago que page.execute_script devuelva ese valor de esa función?