Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

www::mechanize::treebuilder(3pm) [debian man page]

WWW::Mechanize::TreeBuilder(3pm)			User Contributed Perl Documentation			  WWW::Mechanize::TreeBuilder(3pm)

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. perl v5.10.1 2010-12-16 WWW::Mechanize::TreeBuilder(3pm)

Check Out this Related Man Page

Test::WWW::Mechanize::CGIApp(3pm)			User Contributed Perl Documentation			 Test::WWW::Mechanize::CGIApp(3pm)

NAME
Test::WWW::Mechanize::CGIApp - Test::WWW::Mechanize for CGI::Application SYNOPSIS
# We're in a t/*.t test script... use Test::WWW::Mechanize::CGIApp; my $mech = Test::WWW::Mechanize::CGIApp->new; # test a class that uses CGI::Application calling semantics. # (in this case we'll new up an instance of the app and call # its ->run() method) # $mech->app("My::WebApp"); $mech->get_ok("?rm=my_run_mode&arg1=1&arg2=42"); # test a class that uses CGI::Application::Dispatch # to locate the run_mode # (in this case we'll just call the ->dispatch() class method). # my $dispatched_mech = Test::WWW::Mechanize::CGIApp->new; $dispatched_mech->app("My::DispatchApp"); $mech->get_ok("/WebApp/my_run_mode?arg1=1&arg2=42"); # create an anonymous sub that this class will use to # handle the request. # # this could be useful if you need to do something novel # after creating an instance of your class (e.g. the # fiddle_with_stuff() below) or maybe you have a unique # way to get the app to run. # my $custom_mech = Test::WWW::Mechanize::CGIApp->new; $custom_mech->app( sub { require "My::WebApp"; my $app = My::WebApp->new(); $app->fiddle_with_stuff(); $app->run(); }); $mech->get_ok("?rm=my_run_mode&arg1=1&arg2=42"); # at this point you can play with all kinds of cool # Test::WWW::Mechanize testing methods. is($mech->ct, "text/html"); $mech->title_is("Root", "On the root page"); $mech->content_contains("This is the root page", "Correct content"); $mech->follow_link_ok({text => 'Hello'}, "Click on Hello"); # ... and all other Test::WWW::Mechanize methods DESCRIPTION
This package makes testing CGIApp based modules fast and easy. It takes advantage of Test::WWW::Mechanize to provide functions for common web testing scenarios. For example: $mech->get_ok( $page ); $mech->title_is( "Invoice Status", "Make sure we're on the invoice page" ); $mech->content_contains( "Andy Lester", "My name somewhere" ); $mech->content_like( qr/(cpan|perl).org/, "Link to perl.org or CPAN" ); For applications that inherit from CGI::Application it will handle requests by creating a new instance of the class and calling its "run" method. For applications that use CGI::Application::Dispatch it will call the "dispatch" class method. If neither of these options are the right thing, you can set a reference to a sub that will be used to handle the request. This module supports cookies automatically. Check out Test::WWW::Mechanize for more information about all of the cool things you can test! CONSTRUCTOR
new Behaves like, and calls, Test::WWW::Mechanize's "new" method. It optionally uses an "app" parameter (see below), any other parameters get passed to Test::WWW::Mechanize's constructor. Note that you can either pass the name of the CGI::Application into the constructor using the "app" parameter or set it later using the "app" method. use Test::WWW::Mechanize::CGIApp; my $mech = Test::WWW::Mechanize::CGIApp->new; # or my $mech = Test::WWW::Mechanize::CGIApp->new(app => 'TestApp'); METHODS
$mech->app($app_handler) This method provides a mechanism for informing Test::WWW::Mechanize::CGIApp how it should go about executing your run_mode. If you set it to the name of a class, then it will load the class and either create an instance and ->run() it (if it's CGI::Application based), invoke the ->dispatch() method if it's CGI::Application::Dispatch based, or call the supplied anonymous subroutine and let it do all of the heavy lifting. SEE ALSO
Related modules which may be of interest: Test::WWW::Mechanize, WWW::Mechanize. Various implementation tricks came from Test::WWW::Mechanize::Catalyst. AUTHOR
George Hartzell, "<hartzell@alerce.com>" based on Test::WWW::Mechanize::Catalyst by Leon Brocard, "<acme@astray.com>". COPYRIGHT
Copyright (C) 2007, George Hartzell This module is free software; you can redistribute it or modify it under the same terms as Perl itself. perl v5.8.8 2008-03-12 Test::WWW::Mechanize::CGIApp(3pm)
Man Page