Provided by: libwww-mechanize-treebuilder-perl_1.10003-1_all bug

NAME

       WWW::Mechanize::TreeBuilder - Module to optimize WWW::Mechanize and HTML::TreeBuilder use

SYNOPSIS

        use Test::More tests => 2;
        use Test::WWW::Mechanize;
        use WWW::Mechanize::TreeBuilder;
        # or
        # use WWW::Mechanize;
        # or
        # use Test::WWW::Mechanize::Catalyst 'MyApp';

        my $mech = Test::WWW::Mechanize->new;
        # or
        #my $mech = Test::WWW::Mechanize::Catalyst->new;
        # etc. etc.
        WWW::Mechanize::TreeBuilder->meta->apply($mech);

        $mech->get_ok('/');
        is( $mech->look_down(_tag => 'p')->as_trimmed_text, 'Some text', 'It worked' );

DESCRIPTION

       This module combines WWW::Mechanize and HTML::TreeBuilder. Why? Because I've seen too much
       code like the following:

        like($mech->content, qr{<p>some text</p>}, "Found the right tag");

       Which is just all flavours of wrong - its akin to processing XML with regexps.  Instead,
       do it like the following:

        ok($mech->look_down(_tag => 'p', sub { $_[0]->as_trimmed_text eq 'some text' })

       The anon-sub there is a bit icky, but this means that anyone should happen to add
       attributes to the "<p>" tag (such as an id or a class) it will still work and find the
       right tag.

       All of the methods available on HTML::Element (that aren't 'private' - i.e.  that don't
       begin with an underscore) such as "look_down" or "find" are automatically delegated to
       "$mech->tree" through the magic of Moose.

METHODS

       Everything in WWW::Mechanize (or which ever sub class you apply it to) and all public
       methods from HTML::Element except those where WWW::Mechanize and HTML::Element overlap. In
       the case where the two classes both define a method, the one from WWW::Mechanize will be
       used (so that the existing behaviour of Mechanize doesn't break.)

USING XPATH OR OTHER SUBCLASSES

       HTML::TreeBuilder::XPath allows you to use use xpath selectors to select elements in the
       tree. You can use that module by providing parameters to the moose role:

        with 'WWW::Mechanize::TreeBuilder' => {
          tree_class => 'HTML::TreeBuilder::XPath'
        };

        # or

        # NOTE: No hashref using this method
        WWW::Mechanize::TreeBuilder->meta->apply($mech,
          tree_class => 'HTML::TreeBuilder::XPath';
        );

       and class will be automatically loaded for you. This class will be used to construct the
       tree in the following manner:

        $tree = $tree_class->new_from_content($req->decoded_content)->elementify;

       You can also specify a "element_class" parameter which is the (HTML::Element sub)class
       that methods are proxied from. This module provides defaults for element_class when
       "tree_class" is "HTML::TreeBuilder" or "HTML::TreeBuilder::XPath" - it will warn
       otherwise.

AUTHOR

       Ash Berlin "<ash@cpan.org>"

LICENSE

       Same as Perl 5.8, or at your option any later version of Perl.