shrishinde has asked for the wisdom of the Perl Monks concerning the following question:

On IBM site I am trying to automate login and then do some patch download.

#!/usr/bin/perl -w use strict; use WWW::Mechanize::Firefox; my $mech = WWW::Mechanize::Firefox->new( autoclose => 0, autodie => 1, ); $mech->get('https://www-304.ibm.com/pkmslogin.form'); sleep 7; my $dummy; #found that with only username and password #parameters in +set_visible function it entered only #password in username field so a +dded this dummy variable. my $username = 'someusername'; my $password = 'somepassword'; $mech->set_visible( $dummy, $username, $password ); $mech->click('Submit'); #tried below statements as well $mech->click('submit'); $mech->click({ xpath => '//button[@name="Submit"]' });

Output: MozRepl::RemoteObject: NS_ERROR_DOM_INVALID_EXPRESSION_ERR: The expression is not a legal expression. at ./test-firefox.pl line 25. on web page username password are entered correctly but could not click submit button. Please help I am new to Perl.

Replies are listed 'Best First'.
Re: WWW::Mechanize::Firefox could not find submit button
by Anonymous Monk on Jul 11, 2012 at 06:25 UTC

    Sorry for format. On IBM site I am trying to automate login and then do some patch download.

    #!/usr/bin/perl -w use strict; use WWW::Mechanize::Firefox; my $mech = WWW::Mechanize::Firefox->new( autoclose => 0, autodie => 1, ); $mech->get('https://www-304.ibm.com/pkmslogin.form'); sleep 7; my $dumy; #found that with only username and password parameters in #set_visible + function it entered only password in username #field so added this d +ummy variable. my $username = 'user'; my $password = 'password'; $mech->set_visible( $dumy, $username, $password ); my $retries = 10; while ($retries-- and ! $mech->is_visible( xpath => '//*[@id="submit"] +' )) { sleep 1; }; die "Timeout" unless $retries;

    Output: MozRepl::RemoteObject: NS_ERROR_DOM_INVALID_EXPRESSION_ERR: The expression is not a legal expression. at ./test-firefox.pl line 25. on web page username password are entered correctly but could not click submit button. Please help I am new to Perl.

      I can't replicate the problem with WWW::Mechanize::Firefox 0.66. Maybe you are on an older version?

      To see what XPath expression is generated and passed on to Firefox, you can turn up the log level:

      my $mech = WWW::Mechanize::Firefox->new( autoclose => 0, autodie => 1, log => ['debug'], );

      That will produce lots and lots of output, and somewhere in there you might find the error message, and somewhere before that the invalid XPath expression that causes it. But before doing so, consider upgrading to the latest versions.

      Please help I am new to Perl.

      Well, this really has nothing with perl :)

      How did you come up with that xpath expression?

        Thanks for reply. Above mentioned problem is solved. I used below statement for click.

        $mech->click({ xpath => '//*[@value="Submit"]' });