2013-06-18 2 views
0

Я использую PhantomJS через WebDriver/RemoteWebDriver для мониторинга и проверки активности сети во время загрузки страницы. Я получил это до такой степени, что PhantomJS может делать все, что может сделать Chrome или Firefox, загружая страницы, получая доступ к DOM и т. Д.Использование PhantomJS и GhostDriver для сетевого мониторинга с помощью WebDriver или RemoteWebDriver

Однако я не уверен, куда идти отсюда, чтобы иметь возможность для доступа к HTTP-заголовкам запросов и ответов, как я видел в примерах JavaScript PhantomJS. GhostDriver Javadocs, похоже, ничего не упоминает об этом.

Кто-нибудь это сделал?

ответ

2

API WebDriver doesn't expose HTTP request and response headers или коды состояния. PhantomJS может позволить вам их получить, но API WebDriver не раскрывает их. Для некоторых пользователей проекта это point of some contention, но это не изменится, и это решение имеет good and sufficient reasons за то, что оно так. Возможно, вы сможете манипулировать способностью PhantomJS получать эту информацию (если она ее разрешает) с помощью умного использования метода executeScript() WebDriver, но я действительно не знаю, будет ли это работать.

1

Попробуйте использовать Jaunt API. Он безголовый и поддерживает получение заголовка ответа.

Особенности включают в себя (из ссылки):

HTML, XHTML, XML синтаксический анализ. Протоколы: HTTP, HTTPS, basic auth. Заполнение формы с помощью полей/названий/последовательностей полей. Автоматическая перестановка форм. Загрузка/выгрузка файлов. Сохранение полной веб-страницы (изображения, js, css, и т. Д.). Извлечение данных таблицы. DOM навигация, поиск & поиск цепь. Запрос с включенным регулярным выражением. Обработка HTTP-заголовка/файлов cookie. Поддержка прокси-сервера HTTP/HTTPS. Настраиваемое кэширование & обработчики контента. Открытие пагинации. 100% Java (без зависимостей)

1

на основе this answer, я был в состоянии получить эту работу в Java и Selenium 3.4.

Создайте файл ресурсов в своем проекте; называют его netlog.js:

var page = this; 
page.onResourceRequested = function(request) { 
    console.log('Request ' + JSON.stringify(request, undefined, 4)); 
}; 
page.onResourceReceived = function(response) { 
    console.log('Receive ' + JSON.stringify(response, undefined, 4)); 
}; 

Тогда из кода Java, включите ведение журнала, как это:

import org.apache.commons.io.IOUtils; 
String script = IOUtils.toString(getClass().getResourceAsStream("/netlog.js")); 
((PhantomJSDriver) driver).executePhantomJS(script); 

Все каротаж пойдет STDERR.

Существует еще некоторое обсуждение на форуме PhantomJS site.

Смежные вопросы