Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 幻影可以';t加载iframe_Javascript_Iframe_Web Scraping_Phantomjs_Casperjs - Fatal编程技术网

Javascript 幻影可以';t加载iframe

Javascript 幻影可以';t加载iframe,javascript,iframe,web-scraping,phantomjs,casperjs,Javascript,Iframe,Web Scraping,Phantomjs,Casperjs,我是个新手,最近开始在casperjs中使用phantomjs。我想从iframe获取信息,但phantomjs无法加载它 这是我的剧本: var casper = require('casper').create({ verbose: true, logLevel: "debug", waitTimeout: 20000, retryTimeout: 100, viewportSize: { width: 1920, height: 1080

我是个新手,最近开始在casperjs中使用phantomjs。我想从iframe获取信息,但phantomjs无法加载它

这是我的剧本:

var casper = require('casper').create({
   verbose: true,
   logLevel: "debug",
   waitTimeout: 20000,
   retryTimeout: 100,
   viewportSize: {
     width: 1920,
     height: 1080
   },
   pageSettings: {
       "userAgent": 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1'
   },
   localToRemoteUrlAccessEnabled: true
});

casper.start();

casper.open('http://www.badboysbarber.ru/online');

casper.waitForSelector('.y-main-container', function() {
   this.echo("Selector appeared.");
});

casper.then(function() {
   this.capture('screen.png');
});

casper.run();
因此,phantom抛出一个错误(尽管选择器定义正确):


谁能帮帮我吗?也许我做错了什么?谢谢。

一个
iframe
将一个文档加载到另一个文档中。如果您想使用框架并使用CasperJS获取数据,您可能需要在
Casper.prototype
中使用
withFrame()

以下脚本捕获主页中第一个
iframe
的原始HTML内容:

var casper = require('casper').create({
  viewportSize: {
    width: 1920,
    height: 1080
  },
  pageSettings: {
    'userAgent': 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1'
  },
  localToRemoteUrlAccessEnabled: true
});

casper.start('http://www.badboysbarber.ru/online');

casper.withFrame(0, function () {
  this.echo(this.getHTML()); // HTML code of the first iframe
});

casper.run();

很抱歉,即使使用withFrame函数,也无法加载iframe。只需尝试使用
this.captureSelector('selector.png','.y-main-container')
而不是
this.echo(this.getHTML())内置withFrame函数,您将看到。这就是整个问题所在。此外,您还可以查看。如果您可以获得HTML代码,则显然加载了
iframe
。您只是在捕获方面遇到了问题。我尝试了
this.capture('screenshot.png')
inside
withFrame
和SlimerJS,我可以看到
iframe
,不仅当SlimerJS处理页面时,而且在结果屏幕截图上:实际上,只有进度条图标和css/脚本链接加载在这个iframe中,而不是iframe的整个HTML代码。似乎在iframe中有一些ajax对内容加载的调用,也使用了AngularJS。正如我之前所说,PhantomJS挂断了iframe加载,对我来说,它显示了带有进度条图标的白色空白框,而不是iframe内容。这真的不是一个bug吗?我会试试更苗条的。既然你的屏幕截图上有一个正确加载的页面,它也应该适合我。谢谢你的帮助。
var casper = require('casper').create({
  viewportSize: {
    width: 1920,
    height: 1080
  },
  pageSettings: {
    'userAgent': 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1'
  },
  localToRemoteUrlAccessEnabled: true
});

casper.start('http://www.badboysbarber.ru/online');

casper.withFrame(0, function () {
  this.echo(this.getHTML()); // HTML code of the first iframe
});

casper.run();