我尝试检索网站的 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 元素并从中获取值?