2

我正在尝试使用CasperJS来跟踪 iframe 中的链接,但我似乎无法访问 iframe 的文档。

这是使用我找到的 iframe 示例页面进行的测试。第三个 iframe 有一个 name 属性,我需要 Casper 的 frame 方法。卡斯帕 API

var casper = require('casper').create();

casper.start('http://nunzioweb.com/iframes-example.htm');

casper.withFrame('frame', function(){
  this.echo('Page url is ' + this.getCurrentUrl());
  this.echo(this.getHTML());
});

casper.run();

正如我所料,页面网址返回“http://nunzioweb.com/lyrics/455Rocket.html”,但返回的 html 是包装 iframe 的页面。

知道如何进入 iframe 以便我可以单击链接 [在我实际执行此操作的页面上]?

4

2 回答 2

4

由于某种原因.getHTML()在这里不起作用,您必须直接从WebPage实例中获取页面 HTML。

var casper = require('casper').create();

casper.start('http://nunzioweb.com/iframes-example.htm');

casper.withFrame('frame', function(){
    this.echo('Page url is ' + this.getCurrentUrl());
    this.echo(this.page.content);
});

casper.run();

我会处理这个问题。

点击一个链接,例如。在Slick City您的 iframe 示例中的一个:

var casper = require('casper').create();

casper.start('http://nunzioweb.com/iframes-example.htm');

casper.withFrame('frame', function() {
    this.echo('Page url is ' + this.getCurrentUrl());
    this.clickLabel('Slick City');
});

casper.waitForPopup('slickcitydown.htm').withPopup('slickcitydown.htm', function() {
    this.echo('New page url is ' + this.getCurrentUrl());
});

casper.run();

这给出了:

$ casperjs test.js 
Page url is http://nunzioweb.com/lyrics/455Rocket.html
New page url is http://nunzioweb.com/slickcitydown.htm
于 2012-12-19T09:20:21.170 回答
0

看起来在最新版本中该问题已得到修复。

我正在使用 casperjs v.1.0.2 问题中的代码示例,并且我得到了 iframe http://nunzioweb.com/lyrics/455Rocket.html的 html,正如预期的那样。

于 2013-06-04T15:38:25.437 回答