尝试使用CasperJS跟踪iframe中的链接

时间:2012-12-18 22:37:12

标签: javascript web-scraping casperjs

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

这是使用我找到的iframe示例页面的测试。 第三个iframe有一个我需要Casper框架方法的name属性。 Casper 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所以我可以点击链接[在页面上我实际上是这样做的?]

2 个答案:

答案 0 :(得分:4)

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

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();

我会处理这个问题。

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

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

答案 1 :(得分:0)

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

我正在使用casperjs v.1.0.2问题中的代码示例,我正在获得iframe http://nunzioweb.com/lyrics/455Rocket.html的html。