如何在 CefSharp.OffScreen 中检索 HTML 元素的 innerHTML 值

问题描述 投票:0回答:0

我尝试检索网站的 innerHTML 值,以使用 CefSharp 将它们导出到文件中。但是,程序不运行代码行。

例如,我通过向示例网站输入数据来过滤搜索,然后单击下面代码中的搜索按钮。

private async Task InitializeChromium()
        {
            string dir = AppDomain.CurrentDomain.BaseDirectory;
            CefSettings s = new CefSettings();
            s.LogSeverity = LogSeverity.Disable;
            s.CefCommandLineArgs.Add("disable-gpu-compositing", "1");
            s.CefCommandLineArgs.Add("disable webgl", "1");
            s.CefCommandLineArgs.Add("off-screen-rendering-enabled", "1");
            s.DisableGpuAcceleration();
            s.WindowlessRenderingEnabled = true;
            s.BrowserSubprocessPath = dir + "CefSharp.BrowserSubProcess.exe";
            Cef.Initialize(s);
            browser = new ChromiumWebBrowser();
            browser.LoadUrlAsync("https://cars.com");
            browser.Dock = DockStyle.Fill;
           
            panel1.Controls.Add(browser);
               
                browser.ExecuteScriptAsyncWhenPageLoaded("document.getElementsByClassName('sds-text-field')[5].value=94596");
            MessageBox.Show("data entered");
                browser.ExecuteScriptAsyncWhenPageLoaded("document.getElementsByClassName('sds-button')[0].click()");
            MessageBox.Show("clicked button. it forwards to search page now with the filter");
            var script = "document.getElementById('makes')[0].innerHTML;";
            MessageBox.Show("script defined");
var result = await browser.EvaluateScriptAsync(script);
            MessageBox.Show("script works");
if (result.Success && result.Result != null)
{
    string innerHtmlValue = result.Result.ToString();
    MessageBox.Show(innerHtmlValue);
}


        }

为了了解哪一行不起作用,我添加了消息框输出。 “输入数据”、“单击按钮”和“脚本定义”消息框行有效。但是当它转到

var script = "document.getElementById('makes')[0].innerHTML;";
行时,它没有运行该行并且下面的消息框没有显示。它没有错误,javascript 很好,但那条线有点问题。

如何修复 html 元素并从中获取值?

javascript c# html cefsharp chromium-embedded
© www.soinside.com 2019 - 2024. All rights reserved.