Windows窗体WebBrowser控件和iframe

kas*_*ter 6 .net c# browser windows iframe

我正在尝试创建一个软件来或多或少地自动化网页上的表单填充 - 我决定使用WebBrowser控件System.Windows.Forms.这个伟大的工程,我可以很容易地操纵DOM通过webbrowser.Document等等.然而不幸的是,我正在进行自动化的网站有一个在iframe内运行的文件上传 - 这就是我被卡住的地方,我根本无法弄清楚如何能够操纵iframe的DOM内部的元素.

理想情况下,我想做的是:

HtmlElement iframe = browser.Document.GetElementById("iframe_id");
iframe.InnerDocument.GetElementById("file_upload_input").SetAttribute("value", "myfile.txt");
Run Code Online (Sandbox Code Playgroud)

然后在iframe中提交表单当然 - 但是就我所见,没有任何InnerDocument属性HtmlElement,也没有找到我可以强制HtmlElement转换的类型,以便我可以访问内部DOM.

怎么做的?

Dav*_*vid 8

请尝试使用"frames"集合.来自MSDN:

iframe元素用作文档中的文档,或者像浮动框架.frames集合提供对iframe内容的访问.使用frames集合来读取或写入iframe中包含的元素.例如,访问iframe中body对象的backgroundColor样式的语法是:

sColor = document.frames("sFrameName").document.body.style.backgroundColor;

  • 啊哈 - 这是我忘记的事情.这里要注意的一件事是你在这里发布的代码是javascript - WebBrowser控件所需的相应代码是browser.Document.Window.Frames ["frame"]来获取iframe元素. (4认同)