Watir::browser in ruby - 捕获浏览器发出的所有 XHR 请求及其响应

Watir::browser in ruby - Catch all the XHR requests with their responses, made by browser

我正在使用以下 gems 在浏览器中打开网站

gem "watir", "~> 6.1"
gem 'watir-scroll'
gem "geckodriver-helper"
gem 'chromedriver-helper'

我正在为浏览器创建一个实例以在加载的 HTML 上运行,例如,

browser = Watir::Browser.new :firefox
browser.goto "https://www.mysitessss.net/testing"

我只想在使用 browser 对象加载后捕获此页面 URL 发出的所有 XHR 请求,以便我可以得到他们的响应。

请帮忙!

webdriver 和位于 webdriver 之上的 WATIR 和 capybara 等工具的主要目的是按照用户的方式驱动浏览器。对生成的网络流量进行深度检查并不是该工具的真正组成部分。

要手动执行此操作,您可以使用开发人员工具的网络选项卡来查看加载页面时发生的所有请求。您还可以使用网络嗅探或代理工具,例如 fiddler-2、Charles、Wireshark 或 Netmon。

要以编程方式执行此操作,您可能需要使用 nokogiri 或类似的 gem,它专门用于解析 html,如果您想实际发出请求,则可能与 rest-client 之类的东西结合使用各种 api 端点并使用被调用的服务返回的 XML/JSON。这篇博文可能会有帮助 https://readysteadycode.com/howto-extract-data-from-html-with-ruby

您可以通过以下方式实现:

script = 'var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; return performance.getEntries().filter(e=>e.initiatorType=="xmlhttprequest")'
browser.execute_script(script)