该页面上使用了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']
});
但没有成功。
我很困惑,不知道如何注册必要的请求。它不是测试脚本,而是独立脚本。
谢谢。