我正在尝试创建一个软件来或多或少地自动化网页上的表单填充 - 我决定在System.Windows.Forms
中使用WebBrowser控件。这很好用,我可以轻松操纵DOM到webbrowser.Document
等等。然而不幸的是,我正在进行自动化的网站有一个文件上传,它在iframe中运行 - 这就是我被困住的地方,我根本无法弄清楚如何能够操纵iframe的DOM内的元素。
理想情况下,我想做的是:
HtmlElement iframe = browser.Document.GetElementById("iframe_id");
iframe.InnerDocument.GetElementById("file_upload_input").SetAttribute("value", "myfile.txt");
然后在iframe中提交表单 - 当然,就我所见,InnerDocument
上没有HtmlElement
属性,也没有找到我可以投射HtmlElement
的类型{{1}} 1}}以便我可以访问内部DOM。
如何做到这一点?
答案 0 :(得分:8)
请尝试使用“frames”集合。来自MSDN:
iframe元素用作a 文档中的文档,或者像文档 浮动框架。帧集合 提供对内容的访问 iframe中。 使用框架集合 读取或写入包含在中的元素 iframe。例如,语法 访问backgroundColor样式 iframe中的body对象是:
sColor = document.frames( “sFrameName”)document.body.style.backgroundColor;