geekgrrl and nmcfarl are correct about Javascript, but your tick() usage is
wrong. You need to pass the value as the second arg:
$agent->tick($chk_visa,'Visa');
Here are two test scripts for you, the first is a CGI script and the second is a W::M bot
that queries the CGI script and tests its "return" value.
CGI script:
use CGI::Pretty qw(:standard);
if (param('chklstCC:0')) {
print header, param('chklstCC:0');
}
else {
print header,start_html,start_form,
checkbox_group(
-name=>'chklstCC:0',
-values=>[qw(Visa MasterCard Discover)],
),
submit('go'), end_form, end_html,
;
}
Bot script:
use WWW::Mechanize;
use Test::More qw(no_plan);
my $bot = WWW::Mechanize->new();
$bot->get('http://localhost/path/to/cgi_script.cgi');
$bot->tick('chklstCC:0','Visa');
$bot->submit;
is( $bot->content(), 'Visa', "Got expected content" );
UPDATE: (a reply)
No value? Then those aren't "real" checkboxes, are they? Value is a required attribute
for the checkbox input type. I gave you correct usage for
correct HTML. The checkboxes you are trying to check rely on Javascript, and you
will too if you want this bot to work. I have used Javascript with success
before, code is at (jeffa) Re: Encrypt web files!. Good luck, you're gonna need it. :/