1 Revision history for WWW::Mechanize
3 Please note that WWW::Mechanize and Test::WWW::Mechanize are no
4 longer using rt.cpan.org for bug tracking. They are now being
5 tracked via Google Code at
6 http://code.google.com/p/www-mechanize/issues/list
8 Mech now has its own mailing list at Google Groups:
9 http://groups.google.com/group/www-mechanize-users
11 1.34 Mon Dec 10 00:30:39 CST 2007
12 ========================================
14 Many fixes to make the test suite more portable.
17 1.32 Tue Oct 30 12:02:17 CDT 2007
18 ========================================
20 Added dump methods to mirror mech-dump:
21 * $mech->dump_images()
26 Sanity checks in the WWW::Mechanize::Image constructor. Every Image
27 must have a "url" and "tag" field passed in to it.
30 1.31_02 Thu Oct 25 11:48:29 CDT 2007
31 ========================================
33 Added class, class_regex, id and id_regex limiters to find_link()
34 and find_all_links(). Thanks to Adriano Ferreira.
37 1.31_01 Mon Sep 17 23:38:03 CDT 2007
38 ========================================
40 Mech tests now pass even if your DNS server gives A records for
41 anything (like OpenDNS). Thanks, Miyagawa!
43 Searching for the <base href> is now case-inensitive. A better
44 solution would be to actually parse the HTML.
47 mech-dump now handles --user and --password arguments for sites
48 that require authentication.
51 1.30 Thu May 24 21:31:10 CDT 2007
52 ========================================
54 Minor doc fixes. Thanks David Steinbrunner.
57 1.29_01 Tue May 22 14:02:55 CDT 2007
58 ========================================
59 Kevin Falcone and I ask for your assistance in figuring out how to
60 handle the warnings thrown by the tests, other than hiding them.
63 Overhauled how tainting was done. Stole code directly from
66 Have LWP only handle decoding of Content-Encoding, not charset.
69 Fixed the docs for $mech->submit_form()'s with_fields arg.
70 Thanks, Peteris Krumins.
73 1.26 Wed May 16 14:21:29 CDT 2007
74 ========================================
76 Re-reversed the content decoding. This is critical for reading from
77 sites with gzip on the fly, like Wikipedia.
79 Content is now properly tainted.
82 mech-dump can now pass --agent and --agent-alias flags so you can
83 fetch from sites like Wikipedia that block LWP user agents.
86 The mech-dump program is now always installed. It no longer is
87 presented as an option.
90 1.24 Fri May 11 15:57:56 CDT 2007
91 ========================================
92 NOTE: Version 1.24 will NOT automatically decode gzipped content for
93 you any more. Consider it a "do not use" release.
97 * Fixed failures in "make test" with some versions of HTTP::Server::Simple
98 * RT #26593: Improved handling of charsets. Thanks Kevin Falcone.
99 * RT #24354: find_link now handles http-equivs with quoted URLs.
100 * Reverses the change in 1.21_01 where it decodes the content.
103 * Added find_all_inputs() and find_all_submits() methods. Thanks,
105 * Test::LongString is no longer needed, so has been removed as a
109 * Added a test for save_content()
112 1.22 Fri Mar 2 00:05:57 CST 2007
113 ========================================
117 Added Perl::Critic changes and a perlcriticrc file.
120 1.21_04 Sat Oct 7 21:35:42 CDT 2006
121 ========================================
123 * $mech->content( type => 'text' ) was not freeing memory. Thanks to
124 Cat Okita for finding it.
127 * Made the order of parms to $mech->content() not relevant.
130 1.21_03 Sat Oct 7 01:21:46 CDT 2006
131 ========================================
132 [THINGS THAT MAY BREAK YOUR CODE]
133 * The methods $mech->form() and $mech->follow() have been removed.
134 They've been deprecated since 1.10, which was released in Feb 2005.
137 * I'm trying to nail down what seems to be a memory leak on long-running
138 Mech programs. I'm stringifying URI::URL objects wherever I can.
141 * No longer uses UNIVERSAL.
144 1.21_02 Wed Oct 4 13:14:30 CDT 2006
145 ========================================
146 [ENHANCEMENTS THAT MAY BREAK YOUR CODE]
148 * The $mech->stack_depth() setting had no way to say "don't cache any
149 pages at all". How silly!
151 Now, if you set $mech->stack_depth(0), no history of pages will be kept.
152 In the past, it would mean "Keep all pages." This means that if you want
153 to set it to keep all pages, set it to some ridiculously large number.
156 * The docs previously refered to Compress::Gzip instead of Compress::Zlib.
159 1.21_01 Mon Sep 18 17:18:43 CDT 2006
160 ========================================
162 * If Compress::Zlib is installed, gzipped content is now
163 accepted and transparently decoded. No additional syntax needed!
164 This should save time and bandwidth in a number of cases.
167 * Added a put() method. It also calls a subfunction called
168 _SUPER_put that will be removed once LWP::UserAgent supports put().
172 1.20 Sat Aug 19 09:09:08 EDT 2006
175 * Added new two-argument form of credentials() method.
176 $mech->credentials($username, $password);
177 That provides simpler visiting of password-protected
178 resources in the vast majority of cases and still
179 allows the other cases to be supported. (Peter Scott)
182 * autocheck no longer is triggered when informational
183 responses are returned. (Mark Stosberg)
186 * test suite no longer fails when Test::Warn is missing.
187 (CPAN testers, Mark Stosberg)
188 * Removed all the testing against live sites. The networking
189 code is not actually in Mech anway, and they were prone to
190 breaking, as the live sites changed. (Mark Stosberg)
193 1.19_02 Mon Aug 7 23:57:56 CDT 2006
196 * Add new Do-What-I-Mean submit_form() option.
198 with_fields => \%data
200 That expresses that you want to select the first form contains all
201 fields in \%data, and then submit the data to that form. See the docs
202 for form_with_fields() and submit_form() for details.
203 (Mark Stosberg, inspired by RT#6100)
206 * The behavior of clone() now copies over the cookie jar, which
207 is probably what you expected it did in the first place.
208 This fixes bug RT#13541 filed against Test::WWW::Mechanize,
209 which was using clone() internally. (Mark Stosberg)
211 * The correct URL is returned after redirecting. This a regression
212 from 1.04 and was reported as RT#9059, RT#12882, and RT#12786.
213 The documentation about this has also been clarified that we
214 return a URI object, but that it stringifies to the URI itself.
217 * Fixed a misleading parm in the constructor.
218 * Document the return value of set_visible (RT#6071, MJD,
220 * Document that form_name and form_number return an HTML::Form
221 object (Mark Stosberg)
224 * Made lots of little cleanups based on Perl::Critic
225 * Fix Taint-mode warnings with Perl 5.6.1 (RT#16945)
227 1.18 Thu Feb 2 00:11:26 CST 2006
229 * Makefile.PL now takes four new parms:
230 * --live/nolive turns on/off the live tests
231 * --local/nolocal turns on/off the local tests
232 * --mech-dump/nomech-dump installs/doesn't the mech-dump program
233 * --all turns on all tests and installs mech-dump
235 * Fixed some failures in tests. Non-existent URLs now have a
236 "." postpended to them, so if someone's got a search domain
237 with a wildcard (i.e. ignore.us) it'll ignore that. Also,
238 Google's second link is now a https:// link, which some Mechs
239 can't handle. Added a 'url_regex' which now makes it look at
240 the second non-https link. Thanks to Pete Krawczyk.
242 1.16 Fri Oct 28 17:34:20 CDT 2005
244 * Sped up Mech significantly (~20% in some cases). Images and
245 links are extracted from the HTML, and objects are created,
246 only when they're actually needed. This will be a speedup for
247 pages where you're only following links, or vice versa.
249 [THINGS THAT MAY BREAK YOUR CODE]
250 * If you've been relying on the $mech->{images} and $mech->{links}
251 fields being populated so that you can bypass the $mech->images()
252 and $mech->links() accessors, your code will break. That's OK,
253 because you should have been using the accessors all along.
255 1.14 Tue Aug 30 17:17:40 CDT 2005
257 * Added lots of new FAQs. Thanks to Peter Stevens.
260 * Now requires Test::LongString. That's not too odious.
263 * Tests now pass with the shuffling around that Google did.
265 1.13_01 Tue Apr 12 14:11:18 CDT 2005
267 * Now dies if you call submit_form() with a non-existing
268 form_number or form_name. Before, it would just warn.
271 * Added an example of using credentials() in the cookbook.
273 1.12 Thu Feb 24 23:38:44 CST 2005
275 * Fixed RT #9026: hang in t/local/back.t under Windows XP.
276 Thanks Andrew Savige. It also should no longer complain
277 about being unable to clean up a temp file.
279 1.11_01 Mon Feb 14 00:12:48 CST 2005
280 [THINGS THAT MAY BREAK YOUR CODE]
281 * Removed deprecated _parse_html() method.
284 * Was incorrectly looking for INPUT tags TYPE="SUBMIT" as images.
285 Thanks to Abe Timmerman.
288 * Calling $mech->set_fields() with no current form now dies.
289 Thanks to Julien Beasley.
292 1.10 Tue Jan 31 11:30pm-ish
294 * Fixed bug where images inside of links would not be found.
296 * Fixed test failures because of Google changes. Thanks to
297 Offer Kaye and others who sent in patches.
300 * More samples in the FAQ. Thanks to Joshua Gatcomb.
304 * Added explanation of running live tests against Google in
308 1.08 Fri Dec 24 01:01:06 CST 2004
310 * Added find_image() and find_all_images().
312 1.06 Wed Dec 8 14:58:39 CST 2004
314 * Now uses the base pragma instead of setting @ISA.
316 1.05_04 Fri Nov 5 23:35:38 CST 2004
318 * Added WWW::Mechanize::Image object for representing images.
319 * Improved the regex on the URL for META tags.
320 * Added --images flag to mech-dump.
323 * When parsing urls out of meta refresh tags, "url" may now be
326 * Behavior of back() fixed in a number of cases (RT#8109 reported
327 by Josh Purinton, patched by Dominique Quatravaux)
330 * Mark figured out to how to prevent his text editor from
331 putting tabs into the code. Andy's blood pressure dropped
334 1.05_03 Sun Oct 31 20:54:33 CST 2004
337 * click_button() has a new input option for HTML::Form::SubmitInput
340 * content() has new options to return the page formatted
341 as text, with a <base href> added. (RT#8087, patch by
342 Dominique Quatravaux)
344 * update_html() method has been added, which can be used
345 to modify the HTML that Mech parses. It should be sub-classed
346 instead of _parse_html(), which has been deprecated.
347 (RT#8087, patch by Dominique Quatravaux)
349 * select() has new option to select an option by number
350 (RT#5789, Scott Lanning)
352 * WWW::Mechanize::Link now has support providing all the
353 attributes of the link through a new attrs() method, which
354 returns them as a hashref. This is a replacement for the
355 alt() method, added in 1.05_01. It's not backwards
356 compatible with that, but, hey, that's what developer
357 releases are for. (RT#8092, Rob Casey and Mark Stosberg)
360 * Upload <input type="file" ... > does not use the default
361 value to prevent attacks, patch by Jan Pazdziora (RT #7843).
364 * Improved tests and documentation for select() (RT#5789,
367 * Improve taint-safeness on Perl 5.6.1 (RT#8042, patch by
368 Dominique Quatravaux)
370 * Added tests for click_button() (RT#8061, by Dominique
373 * Require URI 1.25, fixing bug which exposed itself in
374 WWW::Mechanize (RT#3048)
376 * Move select() to better location in docs. Document and
377 test the return values. The return value is now "1" on
378 success instead of the undocumented behavior of returning
379 a form value. (RT#6138, spotted by MJD, patched by Mark
382 * Possible matching tags for the find_link() 'tag_regex'
383 attribute are now documented. (RT#2989, by Mark Stosberg)
385 * refactored find_link() to avoid use of eval(). This should
386 improve performance a bit and avoid potential security
387 issues. (Mark Stosberg)
389 1.05_02 Sat Oct 2 16:55:59 CDT 2004
391 * Added the $mech->save_content( $filename ) function, so you
392 can dump stuff to files easily.
394 1.05_01 Thu Sep 30 21:04:44 CDT 2004
397 * set_visible() doesn't stop setting values when it finds a zero.
400 * WWW::Mechanize::Link has a new, easier to remember constructor
401 interface. The old one is still supported. Support for including
402 an 'alt' attribute was added, which is useful for <area> links.
403 (RT #3317). Thanks to Mark Stosberg.
405 * When links are extracted from <area> tags, the ALT attribute will
406 be captured and become part of the WWW::Mechanize::Link object.
407 (RT #3317). Patch by Mark Stosberg.
410 * t/mech-dump.t is now more portable (RT #7690)
412 * t/local/follow.t has new tests to confirm that 'follow*' functions
413 work with characters like o-umlaut, even when the o-umlaut is
414 encoded in the HTML, but not in the call to follow(). (RT #2416)
419 1.04 Wed Sep 15 23:27:53 CDT 2004
422 * $mech->get() now accepts a WWW::Mechanize::Link object.
424 * $mech->stack_depth(n) lets you set the depth of the mech
425 object's page stack. This way, if you have a Mech that does
426 lots of stuff and never/rarely goes back(), you won't be eating
427 up memory. Thanks to BooK and Chi-Fung. (RT #5362)
430 * Fixed tests that fail under LWP >= 5.800.
432 * Added a workaround for LWP::UserAgent->clone() when ->{proxy}
435 * The Referer was getting passed as a URI object sometimes,
436 and that caused sadness. Eugene Haimov supplied a workaround.
440 * Added Ian Langworth's listmod and John Beppu's photobucket
441 uploader programs to WWW::Mechanize::Examples.
443 * Minor doc tweak for find_link()
445 * Finally added a value() func. Thanks to Spoon,
446 who even now, months after his passing, is still contributing
450 1.02 Tue Apr 13 22:45:10 CDT 2004
452 No reason to install if you have 1.00. Fixes are only in tests.
455 * t/referer.t didn't cope with spaces in $FindBin::Bin. Plus,
456 it now forces its URL to localhost.
459 1.00 Sat Apr 10 00:35:51 CDT 2004
461 I figure it's about time we hit 1.00, and this version seems
462 like a good place to do it, because of the potential breakage
465 [THINGS THAT WILL BREAK YOUR CODE]
466 * Header handling has changed. There is no more package variable
467 %headers that holds all the headers to be added. They are
468 now added on a per-object basis.
470 If you were adding a header with add_header(), and the code
471 relied on that header still being set later on in a later
472 instance of the class, that code will now break, because the
473 later instance won't have the header set.
476 * You can now prevent a header from being sent by adding it with
477 an undef value, as in:
479 $mech->add_header( Referer => undef );
482 * Now correctly adds Accept-Encoding to all requests that need it.
485 * Added new $mech->_modify_request($req) method to do all the
486 HTTP header modification before the actual request gets
487 sent off. Subclasses are able to override it if they want.
489 * Removed the unused Compress::Zlib stuff.
492 0.76 Wed Apr 7 22:01:43 CDT 2004
495 * Added update_html() to let you update the HTML for the page
499 * Test files account for new Google layout.
502 * Rearranged the local tests into their own t/local/ directory.
504 * Made the standalone tests show what server they're hitting.
506 * Checked that it runs under LWP 5.78.
509 0.74 Mon Mar 22 23:36:46 CST 2004
512 * WWW::Mechanize now sends an Accept-Encoding header of "identity"
513 to always enforce plaintext responses. Preliminary support for
514 Compress::Zlib is also there, but is disabled by default.
516 * Added click_button() and select() methods. The field() method
517 can now take an arrayref of values, if appropriate. Thanks,
520 * Added url_abs and url_abs_regex parms to find_all_links().
522 * URLs in META REFRESH tags are now treated as links.
524 * t/taint.t makes sure that things that should be tainted are.
527 * Still more fixes if the machine you're on doesn't have
530 * The local changes use localhost as the local host name, instead
531 of whatever host name that might be on the box, but not in DNS.
532 Thanks to David Wheeler for letting me play on his box.
534 * The http_proxy and HTTP_PROXY environment variables get
535 deleted during the tests that access the dummy local server.
536 This should let your tests pass, and clear up a lot of RT
539 0.72 Mon Jan 26 21:07:20 CST 2004
541 * Added the set_visible() method, thanks to Peter Scott.
544 * Started the Cookbook at WWW::Mechanize::Cookbook.pod.
547 * Made the globbing in Makefile.PL a little less command-line
548 intensive. Also fixed the missing files in MANIFEST.
549 * Added t/pod-coverage.t for testing POD coverage.
551 0.71_02 Mon Dec 22 14:29:13 CST 2003
552 [THINGS THAT MAY BREAK YOUR CODE]
553 * Added a 5th, optional parameter to WWW::Mechanize::Link's
554 constructor. In 0.71_01, it was at the beginning of the
555 argument list and was required. Now it's at the end and is
556 optional. If, in the 15 hours since 0.71_01 came out, you
557 went and changed all your WWW::Mechanize::Link constructors,
558 you'll have to change them around again. Otherwise, you can
559 just ignore this change.
561 0.71_01 Sun Dec 21 23:48:12 CST 2003
562 [THINGS THAT MAY BREAK YOUR CODE]
563 * WWW::Mechanize::Link's constructor has a new argument
564 that needs to be passed in, at the start of the argument
568 * WWW::Mechanize::Link object now takes a $base URL, and will
569 return absolute URLs with the url_abs() method. Thanks to
571 * Added another script to WWW::Mechanize::Examples. It's a
572 script that didn't make it into Spidering Hacks.
575 * Heavy use of the new Test::Memory::Cycle module.
576 * Fixed Makefile.PL so that the tests are selected under Win32.
577 * Changed t/mech-dump.t so that the test succeeds under Win32.
578 * Updated t/referer.t and t/mech-dump.t so they run under VMS.
579 Thanks to Peter Prymmer.
582 0.70 Sun Nov 30 23:45:27 CST 2003
583 [THINGS THAT MAY BREAK YOUR CODE]
584 * Redirects are now handled better by LWP, so the code that
585 changes POSTs to GETs on redirects has been removed.
588 * Fixed redirect_ok(), which had its API changed out from under
592 * New warnings in find_link() for strings that are space padded,
593 and for text matches that are passed a regex. Thanks to
597 * Patches from Mark Stosberg and Jim Cromie.
600 * Removed all the checking for Carp. I don't know why I
601 was thinking that Carp wasn't core. RT #4523.
603 Also, a big bump in requirements on LWP: We need 5.76.
606 0.66 Thu Nov 13 14:35:31 CST 2003
608 No new functionality. Fixed up some install bugs and made a
609 few documentation tweaks, mostly to plug Spidering Hacks.
612 0.65 Mon Nov 10 00:11:06 CST 2003
614 * Made a _parse_html() method that you can override or call
615 manually, per request from Gavin Estey.
618 * Made some path naming use File::Spec->catfile so that
619 they work correctly under Windows.
620 * "make clean" cleans up temp flag files.
623 * Uses the new Test::Pod 1.00 for simplicity.
626 0.64 October 23, 2003 11:15pm
628 * Many new tests, based on the excellent coverage reporting
629 created by Paul Johnson's Devel::Cover module.
631 * The start of JavaScript support, sort of!
633 If you have an <A> tag that does an onClick that opens a
634 window, Mech will find the URL from that and make that
635 be the link for the tag. This is for things like Movable
636 Type that pop little windows to rebuild indexes.
638 This is subject to change in the future. I don't know
639 if it will, but I'm not making promises. It might be so
640 buggy I just yank the whole thing.
642 * Big jump in requirements, since we'll soon be using Gisle's
643 new HTML::Form stuff. Also, older versions of HTML::Form
644 don't give output I'm expecting.
647 * Fixed the t/mech-dump.t failure.
649 0.63 October 13, 2003 2:56pm
651 * mech-dump defaults to dumping forms.
652 * Added name, name_regex, tag and tag_regex options to find_link()
654 * Added tests from Jim Brandt.
657 0.62 October 7, 2003 8:46pm
658 [THINGS THAT MIGHT BREAK YOUR CODE]
659 * The parms for find_link()'s url_regex and text_regex must now
660 be actual regex objects, as in qr// objects. They can't just
661 be little text strings. If this is a big bummer, let me know.
664 * Added autocheck parm, to tell your Mech object to die on
665 any error. This saves you from having to check yourself.
666 This closes RT #3056.
667 * Renamed the internal _carp() method as warn().
668 * Added a die() method.
669 * Can now override the warn() and die() handlers in the
671 * find_link() now complains if it gets a *_regex parm that isn't
672 actually a regex. See RT #3032.
675 * mech-dump.t no longer runs if you're not installing mech-dump.
679 * More FAQs. Thanks to Gavin Estey.
682 0.61 October 6, 2003 6:30pm
683 No new functionality here. It's mostly to get the new tests
684 into the pipeline so the CPAN testers can run 'em.
687 * Missing dependency on File::Temp. Thanks, Ask.
690 * Added the test case for the form processing problem as a .t
691 file, since I spent so long getting it down to a simple case.
692 * Internal code uses accessors instead of direct hash entries.
693 Prepare for deprecation of existing hash entries!
696 * The FAQ is now its own document at WWW::Mechanize::FAQ.
699 0.60 September 22, 2003 10:00pm
701 * Changed how t/failure.t tries to fail. It used to hit
702 a bogus hostname in .com, but with Verisign doing its
703 SiteFinder crap, even bogus addresses in .com succeed.
706 * Added _make_request() to let WWW::Mechanize::Cached easily
707 hook into the request chain.
709 0.59 September 3, 2003 11:56pm
711 * Squelched a warning in follow() where it tries to do a regex
712 match against an undef value.
713 * The page stack functionality, including the back() button,
714 was entirely broken. Now it works. Thanks to the mighty
715 Iain Truskett for help.
718 * Added the mech-dump script, which replaces mech-forms.
719 It will dump forms and lists of links. Eventually it will
720 do lists of images, too, but not yet.
722 0.58 August 14, 2003 11:30pm
723 [THINGS THAT MIGHT BREAK YOUR CODE]
724 * $mech->uri() now returns a plain string, not a URI object.
725 The automatic stringification of the URI object was
726 causing problems on Win32 and/or threaded Perls, and I
727 didn't feel like figuring out why. If the non-objectness
728 of the uri() method is a problem, let me know.
729 * form(), form_name() and form_number() now return the
730 HTML::Form object of the form that was chosen. They used
731 to return a 1 or 0. This means that if you're explicitly
732 checking for 1 or 0, instead of evaluating the return
733 code in a boolean context, your code will break.
736 * The <AREA>-handling in extract_links() was incorrectly
738 * uri() now returns a string, not a URI object.
739 * form(), form_name() and form_number() now return the
740 HTML::Form object of the form that was chosen.
743 * Determination of live vs. local tests is now done in
744 Makefile.PL, and we don't have to set those silly semaphore
746 * Made other cleanups in Makefile.PL, like using
747 ExtUtils::Command instead of rolling my own touch().
748 * Moved all the *-live.t tests into t/live/*.t, and renamed
749 the *-local.t files to not be -local.
750 * Added more tests for <AREA> tags.
752 0.57 July 31, 2003 11:21pm
754 * Added <AREA HREF=...> tags to those that are links per
757 0.56 July 24, 2003 12:15pm
758 [THINGS THAT MIGHT BREAK YOUR CODE]
759 * Created agent_alias() method to do the browser string
760 translation. Passing "Windows IE 6" to agent() will get
761 you back exactly that string as the agent. You have to call
762 $a->agent_alias( "Windows IE 6" ) to get the translation.
764 Fortunately, unless you used the new functionality of agent() in
765 the past two days since I released 0.55, it won't be a problem.
768 * Removed the dependencies on Carp and Test::Builder. There still
769 is a dependency on Test::Builder for Test::More, but it's no
770 longer explicit in the Makefile.PL. Mech will use Carp if
771 possible, but it's no longer a requirement.
774 * Added _carp method for handling conditional warnings, rather
775 than checking quiet() all the time.
777 0.55 July 22, 2003 12:10pm
779 * Added WWW::Mechanize::Link object to encapsulate what used to
780 be an array reference of stuff from find_link(). This replaces
781 having to know that $link->[0] was URL and so on. However,
782 since WWW::Mechanize::Link is a blessed arrayref, it's backwards
783 compatible with existing code.
785 * The WWW::Mechanize::Link object now tracks what tag the link
786 came from (<A>, <FRAME> or <IFRAME>).
788 * No longer loads Carp unless and until it's necessary.
790 * submit_form() now uses the currently specified form if a
791 form_name or form_number parm is not specified. (RT #2768)
793 * Added a translate table of handy browser strings that the
794 agent() method recognizes. These strings may be one of the
804 For example, "Windows IE 6" gets replaced with
805 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)".
806 Thanks to Ed Silva for the list.
809 * Moved the deprecated methods to their own section.
811 * Removed the TODO list, since it's all in RT.
813 0.54 July 20, 2003 12:47am
814 [THINGS THAT MIGHT BREAK YOUR CODE]
815 * See the enhancements on extract_links() and failures.
816 Also, see the note about #2811 below.
819 * find_all_links() and find_link() can specify multiple
820 text or url parameters, which will be anded together.
821 Before, there was a pecking order in which parm took
822 precedence, and any extras were ignored. To find the
823 first link with text of "news" and with "cnn.com" in the
826 $a->find_link( text => "news", url_regex => qr/cnn\.com/ );
828 Thanks to Greg Davies for the idea. (RT #2973)
830 * extract_links() is now an internal-only method, named
831 _extract_links(). If you're using it, don't. Use
832 find_all_links() instead, which is more flexible.
834 * Now, when there is a failure of some kind, certain fields
835 like title, forms and links are cleared out. Before, you'd
836 have leftover links from the previous page. I suspect that
837 at least one person out there has been mistakenly relying
838 on this behavior, and his code will now break, but that's
839 a good thing. See t/failure.t for more.
842 * No longer tries to tech mech-forms if you're not installing
844 * Fixed #2811: The definition of the link text contents
845 did not match the documentation.
848 * Added a sample CPAN search from Ed Silva.
849 * Added link to the Perl Advent Calendar.
853 This version ONLY fixes some test-file problems. There are no
854 functionality enhancements or bug fixes in WWW::Mechanize itself.
857 * Explicitly stringifies URI::file objects in the *.t files,
858 in hopes of getting the thread bummers fixed. See RT
863 * mech-forms now handles local files.
864 * Added t/mech-forms.t to test the app
865 * Added some parm-checking to submit_form()
866 * All the warns are now carps. Thanks to MJD for pointing
867 it out during his "Tricks Of The Wizards" talk.
870 * Bumped up the Test::Builder requirement to 0.17, which
871 I hope will get rid of the thread problems with t/tick.t.
872 Thanks to Autrijus Tang for pointing out the note in
877 * Added the "mech-forms" command to list all the forms on
881 * Made the tick.t test not rely on 2shortplanks.com.
885 * Mech now does what most browsers do when they handle a
886 redirect: It changes the POST to a GET. This doesn't match the
887 RFC, but it's what browsers do. Thanks to Stuart Children.
891 * Added a fix a while ago that tracks redirect history. That fix
892 had the bad side effect of always allowing a redirect.
893 That has now been fixed.
897 * Added find_all_links() as the counterpart to find_link().
900 * get() wasn't passing through its parms to LWP::UserAgent::get(),
901 so you couldn't use the :content_file parm. Now it
902 behaves like a good little subclass.
906 * find_link() now lets you pass n=>"all" to get back a list
907 of all links that match the other criteria. NOTE: Outdated! See
908 v0.48 for the preferred way.
909 * find_link() and follow_link() now complain if you pass
910 invalid parms to them.
913 * Tracks URI history properly after redirects.
917 * Added tick() and untick() functions for handling checkboxes.
918 Thanks to Mark Fowler for this patch.
919 * The uri() will only be the URI of the requested page if it worked.
920 * Oh yes, I forgot to mention: We're on Sourceforge now.
924 * Added response() method, which is identical to res().
925 * Added a convenience method success(), which is just a wrapper
926 around $agent->res->is_success().
927 * Passes along a Referer: header. It can still be overridden
928 with the %Headers hash, though. Thanks, Corion.
929 * We now have a set of localized tests that run for machines that
930 aren't connected to the Net. There's now a t/lib/ directory for
931 those helper files, and the previous Utils.pm has been dropped.
932 Again, Corion to the rescue.
936 * Rearranged all the functions in the file so they are now
941 * Now follows redirects after a POST. By default, LWP::UserAgent
942 does NOT follow redirects after a POST. This matches the
943 official RFC. However, since WWW::Mechanize is meant to be a
944 browser clone, and browsers follow the redirects after a POST,
945 I've changed this behavior. If this causes bummers, let me
946 know and maybe I'll throw in a switch.
949 * The package now includes the WWW::Mechanize logo in the etc/
950 directory. I have no idea what I'll do with it, but thanks
951 to Meng Wong for making it!
955 * Now uses request() instead of send_request(). This should
956 solve all of our redirection and cookie bummers.
957 * Added reload() method. Thanks, Corion.
961 * Renamed _do_request() to send_request(), so it's now a
962 proper overload of LWP::UserAgent. Thanks to Philippe Bruhat.
963 Recorded in RT ticket #1708.
964 * Removed the req() method, and tests that used it.
965 * extract_links() now checks for <IFRAME> tags along with the
966 existing <A> and <FRAME>.
967 * Now explicitly requires HTML::HeadParser.
968 * Doesn't load Carp unless it's actually needed.
972 * There are no enhancements in functionality.
973 * Testing suite getting more network-independent.
976 * Started a FAQ section.
977 * New SYNOPSIS section. Thanks to Uri Guttmann.
978 * Documentation fixes. Thanks to Mark Stosberg, Mike Fragassi.
983 * find_link() for finding a specified link
984 * follow_link() for following a specified link
985 * submit_form() for all-in-one form submission.
986 All three owe a great deal to Uri Guttmann. Thanks, Uri!
987 * Split out the examples into WWW::Mechanize::Examples.pod
989 * Documentation fixes from Abigail
993 * No functional enhancements. Everything is docs.
995 * Added a new example from Dan Rinzel, for posting to Movable Type
997 * Started playing with having the test suite not have to have
1002 * The %WWW::Mechanize::Headers hash is officially deprecated.
1003 It will be removed pretty soon. I'm not sure what the
1004 replacement will be, but it won't be a package-level hash.
1007 * The submit() method is no longer an alias for click("submit"),
1008 because some forms don't have a button called "submit".
1009 In fact, some may not have any buttons at all if they're
1010 JavaScript-controlled.
1013 * RT #2056: $agent->field() wasn't returning proper input field,
1014 because of an incorrect call to the underlying HTML::Form.
1015 Thanks to Prakash Kailasa.
1019 * Added an is_html() method
1020 * Added a title() method
1021 * No longer requires the Clone module.
1022 * No longer requires the Test::Pod module, although it's nice
1025 0.36 February 4, 2003
1027 * Added form lookup by name. Thanks to Jan Ivar Pladsen and
1028 Iain Truskett for their patches.
1029 * Added new functions form_name() and form_number(). Existing
1030 form() function calls each of these as appropriate.
1031 * Explicitly requires LWP 5.69 because of the form naming.
1032 * Added new POD section "Examples" for user-submitted sample code
1033 of how to use WWW::Mechanize.
1034 * Quieted the warnings in the test suite, so that you don't get
1035 expected, but disconcerting, warnings to the screen.
1037 0.35 January 22, 2003
1039 * Now creates an internal cookie_jar by default.
1040 * Beefing up the test suite
1041 * Don't forget, direct access to internal members is deprecated.
1042 Use the accessors starting now.
1044 0.33 January 15, 2003
1046 * Added accessor methods
1047 * Deprecated the direct accessing of object contents. You can
1048 no longer rely on the names of any of the hash elements.
1049 * Added a quiet() method to suppress warnings to the screen.
1052 * More documentation fixes. (Thanks to Briac Pilpré)
1054 0.32 September 23, 2002
1056 * Now correctly calls the LWP::UserAgent constructor. (Thanks to
1057 Philippe "BooK" Bruhat)
1059 * Fixed doc on what get() method returns. (Again thanks to BooK)
1061 * Now uses http://www.google.com/intl/en/ as the basis for
1062 testing, since non-US users apparently get redirected to
1063 country-specific sites when they hit http://www.google.com/
1065 0.31 September 13, 2002
1067 * get() now returns the HTTP::Response object.
1068 * Prepended push_page_stack(), pop_page_stack() and
1069 do_request() with underscores, to emphasize that they
1070 are for internal use only.
1072 0.30 September 10, 2002
1074 * Fixed the stack popping problem.
1077 * Put all the inline tests into t/*.t
1079 * get() doesn't work w/relative URLs
1080 http://rt.cpan.org/NoAuth/Bug.html?id=1492
1082 * The arrays returned by extract_links()
1083 now have a third element, which contains
1084 the name attribute of the link (undef
1085 if the link has no name attribute).
1088 Code before this point is forked off from WWW::Automate 0.20b.