我在测试中有一个非常简单的行,它调用这样的执行脚本:
puts page.execute_script("return somefunction();").to_i.inspect
在 javascript 中,我有一个这样的函数:
function somefunction(){
console.log("test");
return 999;
}
控制台日志中的“测试”正在注销,因此它正在运行,但是......
在运行测试时查看日志,execute_script 返回 0 而不是 999,所以在 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
Capybara 每个都有对应的方法——即
Session#execute_script
和 Session#evaluate_script
.如果您切换到使用 evaluate_script
,您的代码应该可以工作(正如@AndreyBotalov 指出的,您还需要删除 return
):puts page.evaluate_script("somefunction();").to_i.inspect
关于ruby-on-rails - 在 capybara 中使用execute_script时如何返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956563/