ruby-on-rails - 在 capybara 中使用execute_script时如何返回值?

标签 ruby-on-rails rspec capybara integration-testing poltergeist

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

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/

相关文章:

ruby - 如何使用 Poltergeist/Capybara/Rspec 记录 javascript 错误?

ruby-on-rails - 如何使用Capybara匹配动态图片文件名?

ruby-on-rails - 为什么 Bundler 无法获取 gem 元数据?

ruby-on-rails - stub 类上调用的所有方法

css - 自定义字体不会在 Firefox for Rails 4 应用程序中呈现

ruby-on-rails - 如何使用无效的用户凭据实现 RSpec session Controller 测试

ruby-on-rails - 如何取消设置 FactoryBot 特征中的属性?

ruby-on-rails - ActionView::Template::错误:SQLite3::SQLException 没有这样的列 "question_list_id"=?

javascript - Twitter Bootstrap 模式输入字段焦点

ruby-on-rails - 如何限制仅在 Rails 中的一个 View 上使用 css 文件?