首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取CefSharp元素的值

获取CefSharp元素的值
EN

Stack Overflow用户
提问于 2016-06-09 05:07:30
回答 5查看 40.2K关注 0票数 10

如何使用CefSharp获取HTML元素的值?

我知道如何使用这个默认的WebBrowser控件:

代码语言:javascript
复制
Dim Elem As HtmlElement = WebBrowser1.Document.GetElementByID("id")

但我没有为CefSharp找到任何类似的东西。我使用CefSharp的主要原因是因为网站的一部分使用iframes来存储源代码,而默认的WebBrowser不支持它。另外,CefSharp有InvokeMember或类似呼叫的选项吗?

顺便说一下,我使用的是最新版本的CefSharp。

EN

回答 5

Stack Overflow用户

发布于 2017-06-15 22:04:16

在他们的常见问题解答中有一个很好的例子来说明如何做到这一点。

https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#2-how-do-you-call-a-javascript-method-that-return-a-result

这是懒惰的代码。非常不言自明,对我来说效果很好。

代码语言:javascript
复制
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.
        }      
    });
票数 14
EN

Stack Overflow用户

发布于 2018-01-18 15:51:17

这是对我有效的唯一方法,版本57.0.0.0..

代码语言:javascript
复制
((CefSharp.Wpf.ChromiumWebBrowser)chromeBrowser).FrameLoadEnd += Browser_FrameLoadEnd;

……

代码语言:javascript
复制
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);
        }
    }
票数 3
EN

Stack Overflow用户

发布于 2020-03-11 09:57:53

这对我很有效。您可以自行修改。

代码语言:javascript
复制
private async void TEST()
{
    string script = "document.getElementsByClassName('glass')[0]['firstElementChild']['firstChild']['wholeText']";
    JavascriptResponse response = await browser.EvaluateScriptAsync(script);
    label1.Text = response.Result.ToString();
}

也许这可以做你的工作。

代码语言:javascript
复制
private async void TEST()
{
    string script = "Document.GetElementByID('id').value";
    JavascriptResponse response = await browser.EvaluateScriptAsync(script);
    string resultS = response.Result.ToString(); // whatever you need
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37712962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档