CefSharp和框架,仅从第一帧检索HTML

use*_*142 3 html frames cefsharp

pcpao.org/general.php?strap=152814186280001650

在尝试从该站点获取完整的HTML时,.GetSourceAsync和.ViewSource都只显示'frameset'HTML.使用ShowDevTools选项,完整的HTML数据包含在元素集合和Chrome-devtools的Sources中.

我在网页加载后运行这个,但它应该都在那里,因为它在开发工具中?

从导航网站获取完整的HTML,我缺少什么.我怀疑这与帧有关,但经过一个小时的谷歌搜索和阅读旧消息,我看到这只是切向提到.

的WinForms

  package id="cef.redist.x64" version="3.2526.1362" targetFramework="net46"
  package id="cef.redist.x86" version="3.2526.1362" targetFramework="net46"
  package id="CefSharp.Common" version="47.0.3" targetFramework="net46"
  package id="CefSharp.WinForms" version="47.0.3" targetFramework="net46"
Run Code Online (Sandbox Code Playgroud)

Jim*_*cox 7

我有同样的问题试图点击和项目位于框架而不是主框架.使用你的答案中的例子,我写了以下扩展方法:

        public static IFrame GetFrame(this ChromiumWebBrowser browser, string FrameName)
    {
        IFrame frame = null;

        var identifiers = browser.GetBrowser().GetFrameIdentifiers();

        foreach (var i in identifiers)
        {
            frame = browser.GetBrowser().GetFrame(i);
            if (frame.Name == FrameName)
                return frame;
        }

        return null;
    }
Run Code Online (Sandbox Code Playgroud)

如果您的表单上有"使用"包含此方法的模块,您可以执行以下操作:

var frame = browser.GetFrame("nameofframe");
        if (frame != null)
            frame.EvaluateScriptAsync("document.getElementById('whateveridyouwanttoclick').click();");
Run Code Online (Sandbox Code Playgroud)

当然,在使用之前你需要确保页面加载完成,但我打算大量使用它.希望能帮助到你!

吉姆