Javascript PhantomJS未从同一URL加载.js
javascript位于我正在打开的同一个网站上 示例:Javascript PhantomJS未从同一URL加载.js,javascript,phantomjs,Javascript,Phantomjs,javascript位于我正在打开的同一个网站上 示例:http://test.site.com js=>http://test.site.com/cache/6343019445fb7d95bd2bd09c5bbfb002.js 我还包括了来自googleapis的jQuery,这似乎是在加载!我试着从类似这样的事件中获取一些数据,但什么都没有显示 这是我的测试代码: var page=require('webpage').create(); page.viewportSize={ 宽度:13
http://test.site.com
js=>http://test.site.com/cache/6343019445fb7d95bd2bd09c5bbfb002.js
我还包括了来自googleapis的jQuery,这似乎是在加载!我试着从类似这样的事件中获取一些数据,但什么都没有显示
这是我的测试代码:
var page=require('webpage').create();
page.viewportSize={
宽度:1366,
身高:720
};
page.settings.loadImages=true;
page.settings.localToRemoteUrlAccessEnabled=true;
page.settings.javascriptEnabled=true;
page.settings.webSecurityEnabled=false;
page.settings.xsauditingEnabled=false;
var uri='1〕http://test.site.com';
page.onConsolleMessage=函数(msg、lineNum、sourceId){
log('console:'+msg+'(来自“'+sourceId+'”中的第#'+lineNum+'行));
};
page.onResourceError=函数(resourceError){
console.log('无法加载资源(#'+resourceError.id+'URL:'+resourceError.URL+'));
console.log('错误代码:'+resourceError.errorCode+'。说明:'+resourceError.errorString);
};
page.onResourceTimeout=函数(请求){
log('Response(#'+request.id+'):'+JSON.stringify(request));
};
page.onError=函数(消息,跟踪){
var msgStack=['ERROR:'+msg];
if(trace&&trace.length){
msgStack.push('TRACE:');
trace.forEach(函数(t){
msgStack.push(“->”+t.file+”:“+t.line+(t.function?”(在函数“+t.function+”):”)中);
});
}
console.error(msgStack.join('\n'));
};
page.onLoadFinished=函数(){
setTimeout(函数(){
console.log(page.content);//有吗
console.log('render');
page.render('test.png');
phantom.exit();
}, 4000);
};
page.open(uri,函数(){
console.log('loaded');
});
除了呈现
、加载
和页面内容之外,我看不到其他控制台消息。
我做错了什么?您必须评估页面。我相信是这样的
page.evaluate(function () {
// This is after page is evaluated and javascript is run
});
请注意,evaluate不允许您访问JS函数或变量,它只为您运行它。如果您需要从Phantom访问JS代码,您需要将JavaScript代码放在
页面中。自己评估,以便您可以控制台。记录或根据需要进行操作。您认为为什么没有加载.JS?代码中没有对此进行检查。我在.js文件中添加了一些消息,它们没有通过onsolemessage
显示。另外,js应该对文档进行可见的更改,这些更改应该反映在屏幕截图中,但是他们没有看到js文件在onResourceReceived
事件中,因此显然它已下载,但出于某种原因它没有执行?!好的,我发现问题出在.js文件代码的某个地方。浏览器不会显示错误或警告,phantomjs也不会通过onError
事件显示错误或警告。。。我现在唯一的选择是逐步删除部分代码,看看是哪一部分导致了这个问题:(我怀疑您运行的是PhantomJS 2.x。众所周知,它会隐藏错误,因此您应该使用PhantomJS 1.9.8进行尝试。这只对在页面上下文中运行函数有用。但我尝试了它来测试console.log是否工作,并查看我的脚本函数是否存在。但是我看到window.jQuery
…我对phan非常生疏。)tom JS,但我相信evaluate不会让您访问JS函数或变量,它只会为您运行。如果您需要这样做,您只需将javascript代码放在页面中。自己评估,以便您可以控制台.log
或根据需要进行操作。。