seven_shen has asked for the wisdom of the Perl Monks concerning the following question:

Dears, i am now confused in getting HTML source from Frame/iframe in firefox with WWW::Mechanize::Firefox. Here is my HTML:

<html> <frameset cols="50%, 50%"> <frame name="1" src="1.html"> <frame name="2" src="2.html"> </frameset> <html>

I want to now get the HTML source of the two frames, how to code it? I will very appreciate you can share a piece of working code here.

Replies are listed 'Best First'.
Re: How to get the Frame/Iframe source in firefox?
by Corion (Patriarch) on Mar 28, 2012 at 11:25 UTC

    With an upcoming version of WWW::Mechanize::Firefox (likely, 0.620.64, out relatively soon, maybe within this week), it should work like this:

    #!perl -w use strict; use WWW::Mechanize::Firefox; my $mech = WWW::Mechanize::Firefox->new(); $mech->get_local("t/52-frameset.html"); print for map { $mech->content( document => $_) } $mech->expand_frames('frame[name="myframe1"]');

    But if you only have v0.61, you have to do a bit of work, and change in sub content the line:

    my $d = $self->document; # keep a reference to it!

    to

    my $d = delete $options{ document } || $self->document; # keep a r +eference to it!

    ... and squelch some more warnings. Or duplicate the subroutine ->content and change it to handle arbitrary documents.