in reply to Re^3: WWW::Mechanize::Firefox not filling out form
in thread WWW::Mechanize::Firefox not filling out form

My apologies. Here's the code example. It inputs the text into the text box and selects the correct radio button and then Firefox goes to 100% usage on a single core.
use strict; use WWW::Mechanize::Firefox; my $url = "http://tools.immuneepitope.org/tools/bcell/iedb_input"; my $agent = WWW::Mechanize::Firefox->new( activate => 1, autoclose => 0, ); my $method = 49; my $seq = "ARRRSFASDATRASDFSDARASDAGADFGASDRFREWFASCDSAGAREW"; $agent->get($url); if ( $agent->success() ) { sleep(5); print "Retrieved $url\n"; $agent->form_name('form1'); #$agent->set_fields( 'sequence' => $seq,'method' => $method); $agent->field( 'sequence' => $seq ); my $q = sprintf '//input[@name="method" and @value="%s"]', $method +; my $method_field = $agent->xpath( $q, single => 1 ); $agent->click( $method_field, synchronize => 0 ); sleep(5); $agent->submit(); }

Replies are listed 'Best First'.
Re^5: WWW::Mechanize::Firefox not filling out form
by Corion (Patriarch) on Dec 10, 2010 at 19:44 UTC

    Ah - again, it's my error, as the API for ->click() does not want a hash but a hash reference when passing in elements and instructions for "blindly" clicking things. I've taken out your calls to sleep and added some warnings for the progress. The main change is from

    $agent->click($method_field, synchronize => 0 );
    to
    $agent->click({ dom => $method_field, synchronize => 0 });
    use strict; use WWW::Mechanize::Firefox; my $url = "http://tools.immuneepitope.org/tools/bcell/iedb_input"; my $agent = WWW::Mechanize::Firefox->new( activate => 1, autoclose => 0, ); my $method = 49; my $seq = "ARRRSFASDATRASDFSDARASDAGADFGASDRFREWFASCDSAGAREW"; $agent->get($url); if ( $agent->success() ) { #sleep(5); print "Retrieved $url\n"; $agent->form_name('form1'); #$agent->set_fields( 'sequence' => $seq,'method' => $method); $agent->field( 'sequence' => $seq ); my $q = sprintf '//input[@name="method" and @value="%s"]', $method +; my $method_field = $agent->xpath( $q, single => 1 ); warn "Method"; $agent->click({ dom => $method_field, synchronize => 0 }); #sleep(5); warn "Submitting"; $agent->submit(); }