Hi, Thanks for replying. As far as I understand it will return undef if no form is found. The form is there so it should do something I would've though, I tried adding in that line anyway using 1 to signify the first (and only) form on the page, still get the same error though :(
Cheers, G :) > Subject: Re: First Mech script: entering a form value (another simple thing > no doubt) > From: [email protected] > Date: Thu, 14 Mar 2013 09:27:27 -0700 > To: [email protected] > > > On Mar 14, 2013, at 8:27 AM, G M wrote: > > > > > Hi all, > > > > I managed to get the problem with my script not connecting to the page last > > night, turned out my web host wouldn't allow it. Got that sorted. Filling > > in the form should be really simple but I'm getting the following error > > when trying to set the "acOriginAirport" field, I thought it might be to do > > with the javascript on the page but I'm entering a value that the form > > accepts. > > > > The form is being found on the page as I can dump out $agent->forms(); > > > > Any ideas anyone? > > > > Status: 500 > > Content-type: text/html > > > > Software error: > > Can't call method "value" on an undefined value at > > /usr/local/lib/perl5/site_perl/5.8.8/WWW/Mechanize.pm line 1407. > > > > > > This is my script: > > #!/usr/bin/perl -w > > > > use strict; > > use CGI qw(:standard); > > use CGI::Carp qw(warningsToBrowser fatalsToBrowser); > > use WWW::Mechanize; > > use HTML::TokeParser; > > use Data::Dumper; > > print "Content-type: text/html\n\n"; > > print "setting up mech<br />"; > > my $agent = WWW::Mechanize->new(); > > $agent->agent_alias('Windows Mozilla'); > > print "mech setup"; > > > > $agent->get('http://www.easyjet.com/en/searchpod.mvc/showborderless?aclwidth=279'); > > print "setting up airports <br />"; > > $agent->field("acOriginAirport", "Glasgow GLA"); > > I have not used WWW::Mechanize, but from reading the documentation, it would > seem you must call $agent->form_number($number) with a form number before > making any calls to field(). > > Line 1407 of Mechanize.pm is part of the field method: > > sub field { > my ($self, $name, $value, $number) = @_; > $number ||= 1; > > my $form = $self->current_form(); > if ($number > 1) { > $form->find_input($name, undef, $number)->value($value); > } > else { > if ( ref($value) eq 'ARRAY' ) { > $form->param($name, $value); > } > else { > $form->value($name => $value); # line 1407 > } > } > } > > The current_form() method is returning null because you have not specified > (with a call to form_number()) which form you are using. Hence the error > message you are seeing. > > > > > -- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > http://learn.perl.org/ > >
