У меня правильно настроен прокси-сервер BrowserMob с Watir, и он захватывает трафик и сохраняет файл HAR;однако то, что он не делает, это то, что он не захватывает трафик непрерывно.Итак, вот что я пытаюсь достичь:
- Перейти на домашнюю страницу
- Нажмите на ссылку, чтобы перейти на другую страницу, где мне нужно ждать, пока произойдут некоторые события
- Оказавшись на второй странице, начните захватывать трафик после того, как событие произошло, и дождитесь, когда произойдет конкретный вызов, и запишите его содержимое.
Однако я замечаю, что оно следуетвсе вышеперечисленные шаги, но на шаге 3 прокси-сервер прекращает захват трафика до того, как этот вызов будет выполнен на этой странице.HAR, который возвращается, не имеет этого вызова, поэтому тест не пройден до того, как он выполнит свою работу.Вот как выглядит код:
class BMP
attr_accessor :server, :proxy, :net_har, :sel_proxy
def initialize
bm_path = File.path(Support::Paths.cucumber_root + "/browsermob-
proxy-2.1.4/bin/browsermob-proxy")
@server = BrowserMob::Proxy::Server.new(bm_path, {:port => 9999,
:log => false, :use_little_proxy => true, :timeout => 100})
@server.start
@proxy = @server.create_proxy
@sel_proxy = @proxy.selenium_proxy
@proxy.timeouts(:read => 50000, :request => 50000, :dns_cache =>
50000)
@net_har = @proxy.new_har("new_har", :capture_binary_content =>
true, :capture_headers => true, :capture_content => true)
end
def fetch_har_entries(target_url)
har_logs = File.join(Support::Paths.har_logs, "har_file # .
{Time.now.strftime("%m%d%y_%H%M%S")} .har")
@net_har.save_to har_logs
index = 0
while (@net_har.entries.count > index) do
if @net_har.entries[index].request.url.include?(target_url) &&
entry.request.method.eql?("GET")
logs = JSON.parse(entry.response.content.text) if not
entry.response.content.text.nil?
har_logs = File.join(Support::Paths.har_logs, "json_file_# .
{Time.now.strftime("%m%d%y_%H%M%S")}.json")
File.open(har_logs, "w") do |json|
json.write(logs)
end
break
end
index += 1
end
end
end
В моем тестовом файле у меня есть следующее
Then("I navigate to the homepage") do
visit(HomePage) do |page|
page.element.click
end
end
And("I should wait for event to capture traffic") do
visit(SecondPage) do |page|
page.wait_until{page.element2.present?)
BMP.fetch_har_entries("target/url")
end
end
Что мне не хватает, из-за чего прокси не захватывает трафик целиком?