下記の方法ですと、チェックまでは入るのですが、その後、手動でクリックしても、正常に送信できません。何か、他にも、調べているのかもしれません。適当に推測してエスパー的な回答を期待します。
また、中断1,2のどちらを試してもうまくいきません。こちらも併せて教えてください。
宜しくお願い致します。
==http----------text.html==
<form action="test.cgi" method="post" name="" id="">
<input name="testA" type="checkbox" value="" id="tA" onclick="if (this.checked) { this.form['testA'].value='40'; }else{this.form['testA'].value=''; } if (this.checked) { this.form['testXXXXA'].value='40'; }else { this.form['testA'].value=''; } " /><label>TEST-A</label>
<input type="submit" name="send_name" value="send">
</form>
==perlスクリプト==
use Win32::OLE;
$IE = Win32::OLE->new('InternetExplorer.Application');
#見えるor見えない
$IE->{Visible} = $visible;
$IE->Navigate( 'http----------text.html' );
# 途中省略
$testa = $ie->document->getElementById("testA"); $testa->{checked} = "true";
exit;##中断1
$IE->document->submit();
exit;##中断2
$btn = $IE->document->getElementById("send_name");
$btn->click();
(原因)クライアントサイドスクリプトが起動していないのが原因と思われる。
$testa = $ie->document->getElementById("testA");
$testa->{checked} = "true";
上記では、オブジェクトに値を入れただけなので
onclickに記述されているスクリプトは起動していない。
(対応)スクリプトを起動させたいならばオブジェクトをclickする。
$testa = $ie->document->getElementById("testA"); $testa->{checked} = ""; $testa->click();
チェックボックスはトグル(クリックする度にオンとオフが切り替わる)なので、
一度内容を空白にしておいてから、クリックするという手間をかけている。
チェックボックスの中身が必ず空白と決まっているのであれば、
checked=""にする必要は無いが、念のためいれておくと安心。
回答いただきありがとうございます。
無事動作致しました!
$IE->document->submit();
についてはいかがでしょうか?