- - PR -
INPUT FILEエレメントは操作不可能?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-01-30 11:02
毎日定時にブラウザから報告書のファイルをアップロードしていた作業を、
自動化したいという案件で、困っているのですが・・・ HTMLの<INPUT TYPE=FILE>エレメントに値を入れる事ってできないのでしょうか? .NETのクラスを使ってアクセスを試みても webBrowser1.Document.GetElementById( "file1" ).InnerText = "report.csv"; DOMを使ってみても ( (mshtml.HTMLInputTextElement)webBrowser1.Document.GetElementById( "file1" ).DomElement ).value = "report.csv"; 全く反応なしです。 <INPUT TYPE=TEXT>エレメントなら、これで値をセットできるのですが・・・ ブラウザから勝手にローカルファイルをアップロードされるのは危険なので、 セキュリティ上仕方ないこととは思いますが・・・ セキュリティの設定で回避できたりしないのでしょうか。。? | ||||
|
投稿日時: 2009-01-30 11:10
失礼しました。書き間違いです。
>> ( (mshtml.HTMLInputTextElement)webBrowser1.Document.GetElementById( "file1" ).DomElement ).value = "report.csv"; ( (mshtml.HTMLInputFileElement)・・以下略 の間違いでした。m(__)m プログラムの方は、HTMLInputFileElementで試してますが。。 | ||||
|
投稿日時: 2009-01-30 11:31
できません。
どのような目的で行いたいのかを仰っていただければ いろいろな回避方法はあると思われます。 | ||||
|
投稿日時: 2009-01-30 12:07
私も、設定でできるようになってても良いと思います。ブラウザー単体で使う場合が無理でも、プログラムから WebBrowser を制御するときぐらい許してくれても良さそうなものですが。 しかし、どちらの場合についても、いまだにそういう設定方法があるとは聞いたことがありませんので、たぶんできないのだと思います。(できないことを証明はできませんが。) ちなみに、ご存知かもしれませんが、過去に関連する話題としては、つぎのものがありました。 件名:「Webbrowserコントロール type=file のテキストボックス部分に文字を入力する方法」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=32163&forum=7 | ||||
|
投稿日時: 2009-01-30 12:13
プログラムによる完全自動化ではなく、手作業の補助的な半自動化ならば、マウスやキーボードの動きを再現するようなツール(ロボット系?)を使うという手もあるのかもしれません。私は良くは知りませんが、フリーウェアを探すといろいろあると思います。 完全自動化に近づけるならば、WebBrowser ではなく WebRequest/WebClient を使って、HTTP のファイルアップロードを処理するのが確実なのかもしれません。もしも目的とするサイトがセッション(ログイン)などを要求していると面倒かもしれませんが。 | ||||
|
投稿日時: 2009-01-30 12:18
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47184&forum=7 | ||||
|
投稿日時: 2009-01-30 13:04
使ったことは無いけど、curlでも使ってみるといいのでは? (同じ名前の別モノがあるので紛らわしいけど、libcurlで検索すると当たるのかな?) # っつか、HTTPをよく勉強してみるべきなのではないかと。 | ||||
|
投稿日時: 2009-01-30 15:37
皆様、ありがとうございます。
TCPクライアントは何度も書いたことあるので、最初は、HTTPリクエストを自分で、と考えたのですが・・・・ このページが、フォームにJavaScriptが付いていていろいろ処理をしたり、URLが動的に変わったり等々、一筋縄にリクエストを送ることができないので、WebBrowserを使ってなんとかできないかと思った次第でして。 でもやはり、自分でリクエストを送りつける方法を考えた方が良さそうですね。 |