2009-09-16 28 views
6

我正在嘗試創建一個軟件來或多或少地自動化網頁上的窗體填充 - 我決定使用System.Windows.Forms中的WebBrowser控件。這很好,我可以很容易地操縱DOMwebbrowser.Document等等。然而不幸的是,我正在做自動化的網站有一個文件上傳,它在iframe中運行 - 這是我卡住的地方,我根本無法弄清楚如何能夠操作iframe中的DOM元素。Windows窗體WebBrowser控件和內聯框架

我想要做什麼理想是一樣的東西:

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

,然後提交過程中的iframe中的形式 - 但沒有對HtmlElement沒有InnerDocument屬性,只要我能看到,也沒有沒有類型,我發現我可以投HtmlElement,以便我可以訪問內部的DOM。

這是怎麼完成的?

回答

8

嘗試使用「frames」集合代替。從MSDN

iframe元素用作文檔內的 文檔,或者像 浮動框架。幀集合 提供對iframe的內容訪問。 使用幀集合 讀取或寫入包含在 iframe中的元素。例如,對於訪問 的 主體對象backgroundColor樣式的iframe中的語法是:

sColor = document.frames( 「sFrameName」)document.body.style.backgroundColor。

+4

啊哈 - 那是我忘記的東西。這裏需要注意的一點是,您在這裏發佈的代碼是javascript - WebBrowser控件所需的相應代碼是browser.Document.Window.Frames [「frame」]以獲取iframe元素。 – kastermester 2009-09-16 20:25:41

+0

@kastermester browser.document中沒有.Window(僅在活動對象下面檢查),並且上面的代碼不起作用(無論如何,在VB6中)。 .frames [...]和.frames(...)之間有區別嗎?所以(或者[有所作爲的嘗試都無濟於事。 – 2012-12-28 07:11:02

相關問題