【发布时间】:2014-02-07 00:17:27
【问题描述】:
我的网站上有一个分析脚本,它会在 1 秒、5 秒和 1 分钟后触发事件。我想用 Phantomjs 对此进行测试,但我无法让它们执行。初始 javascript 加载,但随后的定时事件不会触发。
分析脚本托管在分析提供商域上,我只在我的页面上引用它来收集分析数据。
它不适用于等待或window.setTimeout()
有人知道怎么做吗?
编辑:这是我的 phantomjs 代码
var page = require('webpage').create();
var myArray = ['Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6','Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7)','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; Tablet PC 2.0; InfoPath.3; .NET4.0C; .NET4.0E)'];
page.settings.userAgent = myArray[Math.floor(Math.random() * myArray.length)];
page.viewportSize = { width: 1920, height: 1080 };
var url = 'myurl.com/mypage.html';
page.open(url, function () {
window.setTimeout(function(){
page.render('');
phantom.exit();
},5000);
});
【问题讨论】:
-
超时在幻像中正常工作 - 您确定这不是您的分析脚本的一些支持问题吗?
-
@jraede 当我在 Firefox 或 chrome 等浏览器中打开同一页面时,它工作正常!
-
"您确定这不是您的分析脚本的一些支持问题吗?"意思是,也许它不支持 Phantom 出于某种原因
-
@jraede 我相信它适用于幻影。我对分析代码的了解是这样的:它在加载特定广告后加载一个 javascript,然后该 javascript 内置了一个计时器,该计时器向分析服务器发出有关经过的时间和其他详细信息等的更新请求,现在我知道了这是因为它是一个简单的 GET 请求,我可以从我的嗅探工具 (Charles) 中看到它
-
也许我没有关注 - 如果
setTimeout未运行,您如何查看 GET 请求时间?
标签: javascript phantomjs