【问题标题】:Puffing Billy and Multiple Capybara SessionPuffing Billy 和多个 Capybara 会议
【发布时间】:2019-07-24 01:26:42
【问题描述】:

我正在尝试使用 RSpec 来测试一个使用 Capybara 从网站读取数据的库。

我想用 PuffingBilly 记录这个库中的交互,但我根本无法让 PuffingBilly 响应,因为我认为它专注于 RSpec 正在使用的 Capybara 实例。

如何让 PuffingBilly 阻止来自其他 Capybara::Session 的请求?

回溯

6:来自 /home/jessethebuilder/.rvm/gems/ruby-2.5.3/gems/puffing-billy-2.1.1/lib/billy/proxy.rb:19:in block in start' 5:来自 /home/jessethebuilder/.rvm/gems/ruby-2.5.3/gems/puffing-billy-2.1.1/lib/billy/proxy.rb:70:inmain_loop' 4:来自 /home/jessethebuilder/。 rvm/gems/ruby-2.5.3/gems/eventmachine-1.2.7/lib/eventmachine.rb:195:in run' 3:来自/home/jessethebuilder/.rvm/gems/ruby-2.5.3/gems/eventmachine-1.2.7/lib/eventmachine.rb:195:inrun_machine' 2:来自/home/jessethebuilder/.rvm/gems/ ruby-2.5.3/gems/puffing-billy-2.1.1/lib/billy/proxy.rb:76:in block in main_loop' 1:来自/home/jessethebuilder/.rvm/gems/ruby-2.5.3/gems/eventmachine-1.2.7/lib/eventmachine.rb:531:instart_server' /home/jessethebuilder/.rvm/gems/ruby-2.5 .3/gems/eventmachine-1.2.7/lib/eventmachine.rb:531:in `start_tcp_server': no acceptor (port is in use or requires root permissions) (RuntimeError)

配置 (spec/spec_helper.rb)

Billy.configure do |c|
  c.cache = true
  c.cache_request_headers = false
  c.ignore_params = []
  c.path_blacklist = []
  c.merge_cached_responses_whitelist = []
  c.persist_cache = true
  c.ignore_cache_port = true # defaults to true
  c.non_successful_cache_disabled = false
  c.non_successful_error_level = :warn
  c.non_whitelisted_requests_disabled = false
  c.cache_path = 'spec/fixtures/billy/req_cache/'
  c.certs_path = 'spec/fixtures/billy/req_certs/'
  c.proxy_host = 'localhost'
  c.proxy_port = 4461
  # c.proxied_request_host = 'localhost'
  # c.proxied_request_port = 4461
  c.record_requests = true
  c.cache_request_body_methods = ['post', 'patch', 'put', 'get']
end

【问题讨论】:

    标签: web-scraping rspec capybara


    【解决方案1】:

    为了让 puffing billy 与库中的 Capybara 会话进行交互,您需要使用 puffing billy 代理选项配置您用于该会话的驱动程序

    https://github.com/oesmith/puffing-billy#customising-the-javascript-driver

    【讨论】:

    • 我不应该对此投反对票。如果你编辑它,我会纠正它。
    • 我相信我正在使用 Puffing-Billy 找到合适的端口,但我现在收到此错误:'没有接受器(端口正在使用或需要 root 权限)'我已经能够找到关于这个错误的信息很少。
    • @JesseFarmer 如果您将用于配置会话的代码和完整错误(带有堆栈跟踪)添加到您的问题中,我可能能够提供更多帮助 - 没有这些信息很难确切地知道发生了什么。
    • @JesseFarmer 请将信息添加到您的原始问题,而不是答案(我已经复制并粘贴了您提供给问题的信息)。重要的配置是您的应用程序中 Capybara 会话的配置 - 而不是直接的 PuffingBilly 配置 - 即。您需要将 PuffingBilly 的代理信息添加到 Capybara 会话,而不是相反(我认为您已经这样做了)。请将显示您如何在库中配置 Capybara 会话的代码添加到原始问题中。
    猜你喜欢
    • 1970-01-01
    • 2012-07-28
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多