- ベストアンサー
VBSのIEオブジェクトでフォームデータ送信する方法
- VBScriptのIEオブジェクトを使用して、フォームデータを送信する方法について教えてください。
- 特定のページに移動せずに、hiddenエリアへ直接データを送信する方法を教えてください。
- 複数のエレメントが存在する場合、値を送信する方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問1:「"hidden"のエリアに対してデータを送信する方法」 回答1:「IE.Document.forms("").elements("").value = ""」 html上の表現が何かは関係ありません。 textでもtextareaでもhiddenでもcheckboxでもselectでも同じです。 methodをpostで送るかgetで送るかは重要です。 httpsの場合は基本的に無理だと思ったほうがいいと思います。 また、遷移元ページやクッキーをチェックしている場合もあるので注意してください。 質問2:「全てのエレメントの値を送らないと正しく処理できないでしょうか」 回答2:そういう場合もあります。それはサイトの仕組みによります。 すべて必要なことのほうが多いと思います。submitボタンの値も送信されますが これはチェックしていないことが多いです。 ボタンが複数ある場合などには逆にチェックして処理する場合があります。
その他の回答 (1)
- mibusys
- ベストアンサー率60% (18/30)
>postで送るかgetは、IEオブジェクトから行えるのでしょうか? そうです。 >もし、TCP/IPなどの階層でのプログラミングでしたら、 違います。 もし、さらに追加で質問がある場合には ソースコードの全文を提示してください。
お礼
■お詫び 返事が遅くなり申し訳ありません。 質問を出した後に解ったのですが、"hidden"に関しては私の勘違いが 有りました。 そのせいで、変な質問になり申し訳ありませんでした。 POST先のCGIに"hidden"エリアがあり、そこにデータを送信するのだ と思い込んでいましたが、単なるブラウザ上で目に見えないINPUT部品だった訳ですね。 ■お礼 有益な情報ありがとうございました。 >postで送るかgetは、IEオブジェクトから行えるのでしょうか? はい この回答だけでも、大変感謝しております。 頂いたお答えをヒントに調べてみたら下記のように InternetExplorer.ApplicationのNavigate2で 第4引数に POST で送りたいデータを指定できると言う事が 解りました。その事でよろしいのですよね。 もしかして別の方法でしたでしょうか? ■ソースコード Set IE = WScript.CreateObjec("InternetExplorer.Application") IE.Visible = True IE.Navigate "URL" Do While IE.busy WScript.Sleep 100 Loop IE.Document.forms("FORM1").elements("名前").value = "値" WScript.Sleep 500 IE.Document.forms("FORM1").submit() ■"http://test.com/testform" のHTMLソース <form name="Form1" method="post" action="/action"> <input type="text" name="名前"> <input type="hidden" name="ID" value="1234"> <input type="submit"> </form> これなら、POST使わなくても良いじゃないかと思われるかも しれませんが、このフォームがあるページより、 相当回数の値を変えたデータ送信が必要な場合、 サブミットで新しいページに移行してはまたフォームのページに 戻っては処理を繰り返すのでは時間が掛かります。 そこで、移動先のCGIに直接データをPOSTしたかった訳です。 そうすれば、フォームのあるページに移動する手間が省けるのでは ないかと思ったのです。 まだ、時間が取れず、テストできていませんのでそのような感じに 出来るのか不明ですが。 お世話になりました。
お礼
ご回答ありがとうございます。 不明な点があり、追加質問させてください。 postで送るかgetは、IEオブジェクトから行えるのでしょうか? ※もし、TCP/IPなどの階層でのプログラミングでしたら、 今回は諸事情から、今回避けたいと思っていますので VBSのIEオブジェクト操作でお願いできませんでしょうか?