【问题标题】:Watir::browser in ruby - Catch all the XHR requests with their responses, made by browserWatir::browser in ruby​​ - 捕获所有 XHR 请求及其响应,由浏览器发出
【发布时间】:2018-12-11 23:35:20
【问题描述】:

我正在使用以下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 请求,以便获得他们的响应。

请帮忙!

【问题讨论】:

    标签: ruby ruby-on-rails-4 firefox web-scraping watir


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 说WATIR和capybara坐在webdriver的顶部是不准确的,说WATIR和capybara坐在Selenium的顶部是准确的,Selenium向webdriver发出命令并根据命令它收到后,它会驱动浏览器。
      • 我不同意。 WATIR 和 Capybara 调用的 API 是 WEBDRIVER API。两者都不使用某些人所说的“selenese”。当 Selenium 进入 2.0 并且 Selenium 和 Webdriver 项目合并时,Webdriver API 也被添加到 selenium。 Selenium 2 (ruby) 和所谓的 watir-webdriver 的开发是并行发生的。 (参见watir.com/history)当前的“由硒驱动”品牌基本上是当这些项目合并并重新编写硒以在webdriver之上运行时硒名称“胜出”的结果。见seleniumhq.org/docs/03_webdriver.jsp
      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多