Отслеживание ссылок в CasperJS - PullRequest
0 голосов
/ 16 апреля 2019

На странице используется Google Analytics.Одной из его функций является отслеживание нажатых ссылок.После нажатия на ссылку отправляется GET-запрос.Мой код должен регистрировать такой запрос после нажатия на конкретную ссылку.Как это выглядит сейчас?Требуемая страница загружена, затем устанавливается обработчик onResourceRequested.Теперь он просто регистрирует каждый requestData.url на консоли.Затем эмуляция щелчка по ссылке и wait(2000) используется для ожидания этого запроса.Однако этот точный запрос аналитики не регистрируется.Мой минимальный код выглядит следующим образом:

const casper = require("casper").create();

const ADDRESS = "https://example.com/";
const SELECTOR = "#button";

function resourceRequestedHandler(casper, requestData, request) {
    console.log(requestData.url);
}

casper.start(ADDRESS, function() {
    casper.options.onResourceRequested = resourceRequestedHandler;
    this.click(SELECTOR);
    this.wait(5000);
});

casper.run();

Я вижу два других запроса аналитики, но не тот, который мне действительно нужен.

Затем я добавил отладку:

const casper = require("casper").create();

casper.on('page.error', function(msg, trace) {
  this.echo('Error: ' + msg, 'ERROR');
  for(var i=0; i<trace.length; i++) {
      var step = trace[i];
      this.echo('   ' + step.file + ' (line ' + step.line + ')', 'ERROR');
  }
});

...

и теперь я вижу это сообщение об ошибке:

Error: ReferenceError: Can't find variable: $
   https://example.com/ (line 1)
    (line 0)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5727)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5729)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5629)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5646)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5609)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5647)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5647)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5647)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5649)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5655)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5654)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5657)
   https://www.googletagmanager.com/gtm.js?id=GTM-N77ZNG (line 5658)
Error: TypeError: undefined is not an object (evaluating 'isi.offset().top')
   https://example.com/sites/g/files/qhldwo1226/files/js/js_pRAAd8Zu6jlSeEw2taM6IolaW3NYjhhsBhikiOHSiuE.js (line 4064)

Я пытался неявно добавить jQuery с

const casper = require('casper').create({
    clientScripts: ['jquery-3.2.1.js']   
});

, но безуспешно.

IЯ запутался и понятия не имею, как оформить необходимый запрос.Это не тестовый скрипт, это просто автономный скрипт.

Спасибо.

...