从文件中
Session#evaluate_async_script
-
https://www.rubydoc.info/gems/capybara/Capybara/Session#evaluate_async_script-instance_method
-重要的部分是“从回调函数,它将作为最后一个参数传递给脚本”。你的脚本没有调用回调函数
arguments[0]
所以水豚无法知道它已经完成了。
为了让它工作,你需要一些(未经测试的)东西
result = Capybara.current_session.evaluate_async_script("
var cb = arguments[0];
window.signin('#{user.email}','#{user.password}', cb);")
如果需要的话,还可以将电子邮件和密码作为参数传入
result = Capybara.current_session.evaluate_async_script('
var cb = arguments[2];
window.signin(arguments[0], arguments[1], cb);', user.email, user.password)
注意这会将回调函数移动到
arguments[2]
,因为你要先传递另外两个参数。
更大的问题是你是否需要使用
evaluate_async_script
. 只有当您真正需要异步函数的响应时才需要它,如果不需要,您可以用
execute_script
然后像平常一样等待可见的页面更改。