如何使用CefSharp获取HTML元素的值?
我知道如何使用这个默认的WebBrowser控件:
Dim Elem As HtmlElement = WebBrowser1.Document.GetElementByID("id")但我没有为CefSharp找到任何类似的东西。我使用CefSharp的主要原因是因为网站的一部分使用iframes来存储源代码,而默认的WebBrowser不支持它。另外,CefSharp有InvokeMember或类似呼叫的选项吗?
顺便说一下,我使用的是最新版本的CefSharp。
发布于 2017-06-15 22:04:16
在他们的常见问题解答中有一个很好的例子来说明如何做到这一点。
这是懒惰的代码。非常不言自明,对我来说效果很好。
string script = string.Format("document.getElementById('startMonth').value;");
browser.EvaluateScriptAsync(script).ContinueWith(x =>
{
var response = x.Result;
if (response.Success && response.Result != null)
{
var startDate = response.Result;
//startDate is the value of a HTML element.
}
});发布于 2018-01-18 15:51:17
这是对我有效的唯一方法,版本57.0.0.0..
((CefSharp.Wpf.ChromiumWebBrowser)chromeBrowser).FrameLoadEnd += Browser_FrameLoadEnd;……
async void Browser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
Console.WriteLine("cef-"+e.Url);
if (e.Frame.IsMain)
{
string HTML = await e.Frame.GetSourceAsync();
Console.WriteLine(HTML);
}
}发布于 2020-03-11 09:57:53
这对我很有效。您可以自行修改。
private async void TEST()
{
string script = "document.getElementsByClassName('glass')[0]['firstElementChild']['firstChild']['wholeText']";
JavascriptResponse response = await browser.EvaluateScriptAsync(script);
label1.Text = response.Result.ToString();
}也许这可以做你的工作。
private async void TEST()
{
string script = "Document.GetElementByID('id').value";
JavascriptResponse response = await browser.EvaluateScriptAsync(script);
string resultS = response.Result.ToString(); // whatever you need
}https://stackoverflow.com/questions/37712962
复制相似问题