【问题标题】:Windows Forms WebBrowser control and iframesWindows 窗体 WebBrowser 控件和 iframe
【发布时间】:2010-11-28 22:36:25
【问题描述】:

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

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

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

然后当然是在 iframe 中提交表单 - 但是据我所知,HtmlElement 上没有 InnerDocument 属性,也没有我发现可以将 HtmlElement 转换为的类型我可以访问内部 DOM。

这是怎么做到的?

【问题讨论】:

    标签: c# .net windows iframe browser


    【解决方案1】:

    尝试改用“框架”集合。来自MSDN

    iframe 元素用作 文档中的文档,或类似 浮动框架。框架集合 提供对内容的访问 框架。 使用框架集合 读取或写入包含在 一个 iframe。 例如, 访问 backgroundColor 样式 iframe 中的 body 对象是:

    s颜色 = document.frames("sFrameName").document.body.style.backgroundColor;

    【讨论】:

    • 啊哈——那是我忘记的事情。这里要注意的一件事是,您在此处发布的代码是 javascript - WebBrowser 控件所需的相应代码是 browser.Document.Window.Frames["frame"] 以获取 iframe 元素。
    • @kastermester 在 browser.document 下没有 .Window (只是在 live 对象下检查)并且上面的代码不起作用(无论如何在 VB6 中)。 .frames[...] 和 .frames(...) 之间有区别吗?所以(或[有所作为?我都试过了,但都无济于事。
    • 嗨,如果 iframe 没有 name 属性怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多