Windows窗体WebBrowser控件和内联框架

问题描述:

我正在尝试创建一个软件来或多或少地自动化网页上的窗体填充 - 我决定使用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。

这是怎么完成的?

尝试使用“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