提问人:CafeHey 提问时间:7/25/2014 最后编辑:RimianCafeHey 更新时间:5/14/2015 访问量:16100
在水豚中使用execute_script时如何返回值?
How to return a value when using execute_script in capybara?
问:
我在测试中有一个非常简单的行,它调用执行脚本,如下所示:
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该函数返回该值?
答:
45赞
Justin Ko
7/26/2014
#1
Poltergeist 驱动程序旨在返回 nil execute_script
:
def execute_script(script)
browser.execute(script)
nil
end
Poltergeist 仅在使用以下evaluate_script
时才会返回一个值:
def evaluate_script(script)
browser.evaluate(script)
end
Capybara 对每个都有相应的方法 - 即 Session#execute_script
和 Session#evaluate_script
。如果您切换到 use(正如 @AndreyBotalov 指出的那样,您还需要删除 ):evaluate_script
return
puts page.evaluate_script("somefunction();").to_i.inspect
评论
1赞
Andrei Botalov
7/27/2014
请注意,这个答案不适用于 Selenium,因为 Capybara 会插入自己。return
0赞
Justin Ko
7/28/2014
@AndreyBotalov,我更正了代码以删除使用 .包括 将为 Selenium 和 Poltergeist 抛出一个例外。return
evaluate_script
return
评论