2009-09-16 14 views
6

Webページ上のフォームフィリングを多かれ少なかれ自動化するソフトウェアを作成しようとしていますが、System.Windows.FormsでWebBrowserコントロールを使用することに決めました。これは素晴らしい作品で、DOMからwebbrowser.Documentまで簡単に操作できます。しかし残念なことに、私がオートメーションを行っているサイトには、iframeの内部で実行されるファイルアップロードがあります。これは私が立ち往生した場所で、iframeのDOM内の要素を操作する方法を考えることができません。WindowsフォームWebBrowserコントロールとiframe

理想的には私が何をしたいのですが何のようなものされています

HtmlElement iframe = browser.Document.GetElementById("iframe_id"); 
iframe.InnerDocument.GetElementById("file_upload_input").SetAttribute("value", "myfile.txt"); 

そしてもちろんのiframe内のフォームを送信する - しかし、私の知る限りHtmlElementにはInnerDocument属性が存在しない、また私が内部のDOMにアクセスできるように、私がHtmlElementをキャストできることがわかったタイプはありません。

これはどのように行われますか?

答えて

8

「フレーム」コレクションを代わりに使用してください。 MSDNから:

文書内の文書、または フローティングフレーム等のiframe要素機能します。フレームコレクション は、 iframeのコンテンツへのアクセスを提供します。 にフレームコレクションを使用して、 に含まれる要素をiframeで読み書きします。たとえば、iframe内 本体オブジェクトのbackgroundColorスタイルにアクセス の構文は次のとおりです

sColor = のDocument.Frames( "sFrameName")document.body.style.backgroundColor;。

+4

私は忘れてしまったものでした。ただし、ここに書き留めたコードはjavascriptです.WebBrowserコントロールに必要なコードはiframe要素を取得するためのbrowser.Document.Window.Frames ["frame"]です。 – kastermester

+0

@kastermesterブラウザのドキュメントの下に.Windowがありません(ライブオブジェクトの下にチェックされています)、上記のコードはVB6で動作しません。 .frames [...]と.frames(...)の間に違いがありますか?そういうわけで(あるいは、差をつけてみると、どちらも役に立たなかった。 –

関連する問題