Настройка Browsermob Proxy + Selenium + Ruby дает 550 ответов - PullRequest
0 голосов
/ 04 января 2019

Итак, я пытаюсь интегрировать Browsermob в проект Ruby, чтобы я мог редактировать http-ответы. Я следовал настройке с инструкциями Selenium от Github и другой статьи , которую я нашел о тестировании производительности - что я тоже хочу сделать.

Для этого я взял код из статьи о тестировании производительности, но результаты, которые я получаю, совпадают. Код

require 'selenium-webdriver'
require 'browsermob/proxy'
require 'rspec-expectations'
include RSpec::Matchers
require 'json'

def configure_proxy
  proxy_binary = BrowserMob::Proxy::Server.new('my/path/to/browsermob-proxy-2.1.4/bin/browsermob-proxy')
  proxy_binary.start
  proxy_binary.create_proxy
end

def browser_profile
  browser_profile = Selenium::WebDriver::Firefox::Profile.new
  browser_profile.proxy = @proxy.selenium_proxy
  browser_profile
end

def setup
  @proxy = configure_proxy
  @driver = Selenium::WebDriver.for :firefox, profile: browser_profile
end

def teardown
  @driver.quit
  @proxy.close
end

def capture_traffic
  @proxy.new_har
  yield
  @proxy.har
end

def run
  setup
  har = capture_traffic { yield }
  @har_file = "./selenium_#{Time.now.strftime("%m%d%y_%H%M%S")}.har"
  har.save_to @har_file
  teardown
end

run do
  @driver.get 'http://the-internet.herokuapp.com/dynamic_loading/2'
  @driver.find_element(css: '#start button').click
  Selenium::WebDriver::Wait.new(timeout: 8).until do
    @driver.find_element(css: '#finish')
  end
end

performance_results = JSON.parse `yslow --info basic --format json #{@har_file}`
performance_grade = performance_results["o"]
performance_grade.should be > 90

Теперь проблема в том, что, как только я пытаюсь запустить этот код (изолированный от моего проекта или даже внутри него), я получаю:

(.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/abstract_response.rb:220:in 'rescue in exception_with_response': HTTP status code 550 (RestClient::RequestFailed)

Кто-нибудь знает, почему я получу это? Я понимаю, что 550 - это код, который не выполняется, но я не понимаю, зачем мне это?

Любая помощь будет ОЧЕНЬ высоко ценится!

...