我正在进行此测试,我必须获取pdf文件的内容。 html结构(在传统浏览器的客户端渲染之后)就是这样的


 < iframe id =“frame”name =“frame”src =“链接”id =“frame”>
 < embed id =“plugin”src =“src to pdf file”>
 pdf显示在这里
 < /嵌入
< / iframe中>
 代码>


 当我输出上卡斯帕的IFRAME内容的HTML是空的,我的代码是这样的


 casper.then(function(){
 this.wait(5000);
 casper.withFrame(' frame',function(){
 //页面渲染,但它不会显示pdf
 this.capture('pic.png');
 this.evaluate(function() {
 //查找
 document.querySelector('body');
 //返回null
 document.querySelector('embed');
});&#xA ;});
);



 我不明白为什么幻影不会使用pdf文件呈现元素,有解决方法吗?

答案 0 :(得分:2)
很难给你一个深入的答案,因为你没有提供Minimal, Complete, and Verifiable example。但是,我可以建议你解决几个问题:
您的代码中存在一些语法错误,尤其是在您使用evaluate
时。回调未正确传递,您不返回任何值。要测试evaluate
结果,通常需要执行以下操作:
this.echo('Title: ' + this.evaluate(function () {
return document.title;
}));
getHTML()
检查<embed>
是否存在在withFrame
内,您可以使用以下行打印<iframe>
的原始HTML代码:
console.log(this.getHTML());
这就是CasperJS实际看到的。
var casper = require('casper').create();
casper.start('URL OF YOUR MAIN PAGE');
casper.then(function () {
this.echo('Main page: ' + this.getTitle());
this.wait(5000).withFrame('frame', function () {
this.echo('iframe: ' + this.evaluate(function () {
return document.title;
}));
this.capture('pic.png');
console.log(this.getHTML());
});
});
casper.run();