在CasperJS中捕获链接跟踪

时间:2019-04-16 12:30:07

标签: javascript casperjs

该页面上使用了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']   
});

但没有成功。

我很困惑,不知道如何注册必要的请求。它不是测试脚本,而是独立脚本。

谢谢。

0 个答案:

没有答案