如何在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_script
和Session#evaluate_script
。 如果切换到使用evaluate_script
您的代码应该可以工作(并且当@AndreyBotalov指出时,您还需要删除return
):
puts page.evaluate_script("somefunction();").to_i.inspect