t.me/atinfo_chat Telegram группа по автоматизации тестирования

Инструмент для консольного сетевого лога страницы

Теги: #<Tag:0x00007f748a892028> #<Tag:0x00007f748a891f60> #<Tag:0x00007f748a891e20>

Всем привет. Извините за кривой заголовок.
Есть страница на домене example.com/page.
На этой странице идёт запрос 100500 ресурсов (картинки, стили, скрипты) с разных мест.
С внешних источников, например, mx.yandex.ru или с внутренних, например, example.com/css/main.css.
А есть ещё тестовый сервер dev.example.com, на котором тоже есть страница dev.example.com/page.
Нужно убедиться, что на dev.example.com/page внутренние запросы идут на dev.example.com/css/main.css, а не на example.com/css/main.css, т. е., запросы ресурсов на странице должны идти в рамках своего домена.
В ручную это сделать просто. Достаточно открыть консоль разработчика в браузере, раздел Сетевые запросы.


Существуют ли инструменты, которые смогли бы тоже самое сделать в консоли (bash) или, что лучше, из кода (лучше Ruby)?
Selenium вроде такого не даёт. Он даёт только доступ к JavaScript консоли.

Может это поможет: Что такое browsermob-proxy и как заставить его работать? Туториал для начинающих. Пример использования на Python

1 Симпатия

Большое спасибо, кажется, это именно то, что я искал.
Отдельно посмотрел, что browsermob-proxy есть и под Ruby.
Буду пробовать.

Решал похожую задачу когда-то с browsermobproxy. Потом в итоге отказались от решения в пользу phantomjs. В phantomjs есть отличная фича - http://phantomjs.org/network-monitoring.html (в случае с Ruby - легко все заводится в связке Capybara + Poltergeist). Прийдется написать немного Javascript кода - но решенее будет работать шустрее, стабильнее и не будет требовать дополнительно-запущенного процеса browsermobproxy сервера

в хроме можно тоже сделать вот что:

var ua = window.navigator.userAgent;
if (ua.match(/PhantomJS/)) {
    return [{}];
} else {
    var performance =
        window.performance ||
        window.mozPerformance ||
        window.msPerformance ||
        window.webkitPerformance || {};
    if (ua.match(/Chrome/)) {
        var network = performance.getEntries() || {};
        return network;
    } else {
        var timings = performance.timing || {};
        return [timings];
    }
}

см. https://github.com/sergueik/chrome_page_performance_sqlite

1 Симпатия