如何在capybara中使用execute_script时返回值?

我在测试中有一个非常简单的行,调用这样的执行脚本:

puts page.execute_script("return somefunction();").to_i.inspect 

在javascript我有这样的function:

 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_scriptSession#evaluate_script 。 如果切换到使用evaluate_script您的代码应该可以工作(并且当@AndreyBotalov指出时,您还需要删除return ):

 puts page.evaluate_script("somefunction();").to_i.inspect