为了避免使用我们的分析标记进行回归,我想使用PhantomJS自动测试Adobe Analytics标记。
为此,我希望能够测试两件事:
我想要间谍的HTML源代码中的变量的例子:
<script>s.events="event27";</script>
这是我到目前为止的js测试脚本:
"use strict";
if (!String.prototype.contains) {
String.prototype.contains = function (arg) {
return !!~this.indexOf(arg);
};
}
var page = require('webpage').create();
page.onResourceRequested = function(request) {
var obj = JSON.stringify(request, undefined, 4);
var needle = '2o7';
var url = request.url;
if (url.contains(needle)) {
var calledUrl = decodeURI(decodeURIComponent(url));
console.log(calledUrl);
}
};
page.onResourceReceived = function(response) {
var jsonResponse = JSON.stringify(response, undefined, 4);
};
page.open('http://www.domain.com/page.html', function() {
var s_account = page.evaluate(function () {
return window.s_account;
});
var s_events = page.evaluate(function () {
return window.s.events;
});
phantom.exit();
});
我希望能够将s_account和s_events变量传递给onResourceRequested函数,这样我就可以在这两个变量和_UET参数中声明相同的函数。
但我无法弄清楚该怎么做。任何帮助将不胜感激!
答案 0 :(得分:-1)
我找到了办法。
我实际上从onResourceRequested回调中获取了window.s_account的内容:
page.onResourceRequested = function(request) {
var obj = JSON.stringify(request, undefined, 4);
var needle = '2o7';
var url = request.url;
var result = false;
if (url.contains(needle)) {
var s_account = page.evaluate(function () {
return window.s_account;
});
result = true;
var calledUrl = decodeURI(decodeURIComponent(url));
console.log(s_account);
}
};
这可能不是最优雅的方式,但它有效。