I have written a code to automate my webpage to do a search and download a report. Till selection of the report everything works fine. But download click is not working after clicking checkbox. It works well if i keep the download click bust before checkbox select. But I need to select the reports to click download.
<form action="xxx.net:1234/xxx/xxx/abc.do?starttrail=true&advancedSearch=true" onsubmit="javascript:deleteReport(this);"> <input type="hidden" name="formAction" id="formAction"/> <table id="reportLog" class="content" cellspacing="0" cellpadding="0"> <tr> <th class="actionHeader" colspan="5"> <div class="leftButtons"> <input type="button" id="deleteButton" name="delete" value='Delete' height="5" /> <input type="button" id="downloadButton" name="download" value='Download' height="5" /> </div> </th> </tr> <tr> <th class="column checkbox"><input type="checkbox" name="selectAll" onClick='javascript:checksOnlyActive(this.checked, this.form, "selectedLogs")'/></th> </tr> <tr> <td class="checkboxCol "> <input type="checkbox" name="selectedLogs" value='178746' /></td> <td >Complete</td> <td >def</td> <td >123abc</td> <td nowrap>
Feb 14, 2016 1:31 PM
</td> </form>
Perl code:
#! C:/Perl64/bin/perl.exe
use strict;
use warnings;
use WWW::Mechanize::Firefox;
my $mech = WWW::Mechanize::Firefox->new();
my $url = 'login_path';
my $url_2 = 'search_tab_path';
sub print_status()
{
my $status =$mech->status();
print "status = $status\n";
}
$mech->get($url,
activate => 1,
autoclose => 0,
js_JSON => 'native');
print_status();
my $username = 'aaa';
my $password = 'bbb';
$mech->form_name('logonForm') ;
$mech->field ('username' => $username);
$mech->field ('password' => $password);
#print_status();
$mech->click({ xpath => '//*[@value="Login"]' });
#print_status();
$mech->get($url_2);
$mech->form_name("reportLogCatalogForm");
$mech->field('searchV','vkknava');
$mech->click({ xpath => '//*[@id="searchButton"]' });
#$mech->click({ xpath => '//input[@onclick]',synchonize => 0 }, 1);
my $l = $mech->xpath('//input[@onclick]', single => 1);
$mech->synchronize('DOMFrameContentLoaded', sub {
$l->__click()
});
$mech->click({ xpath => '//*[@id="downloadButton"]',synchonize => 0 });
I have copied only a part of the html code (without JS functions). I cannot change the html as it is generated from a 3rd party tool.