CefSharp - Get Value of HTML Element

后端 未结 5 1141
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-12 10:20

How can I get the value of an HTML element with CefSharp?

I know how to do with this default WebBrowser Control:

Dim Elem As HtmlElement = WebBrowser         


        
相关标签:
5条回答
  • 2021-01-12 10:28
    string script = @"document.getElementById('id_element').style;";
    browser.EvaluateScriptAsync(script).ContinueWith(x=> {
        var response = x.Result;
        if (response.Success && response.Result != null)
        {
            System.Dynamic.ExpandoObject abc = (System.Dynamic.ExpandoObject)response.Result;
            foreach (KeyValuePair<string,object> item in abc)
            {
                string key = item.Key.ToString();
                string value = item.Value.ToString();
            }
        }
    });
    

    It working for me.

    0 讨论(0)
  • 2021-01-12 10:40

    this is the only way that worked for me, version 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);
            }
        }
    
    0 讨论(0)
  • 2021-01-12 10:40

    With CefSharp,you can get elements' value by javascript.

    For example,

    m_browser.ExecuteScriptAsync("document.GetElementById('id1');");
    

    About javascript,you can learn it from w3s.

    And I think you should read this passage.

    Have fun.

    0 讨论(0)
  • 2021-01-12 10:42

    There is a really good example of how to do this in their FAQ.

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

    Here is the code for the lazy. Pretty self explanatory and it worked well for me.

    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.
            }      
        });
    
    0 讨论(0)
  • 2021-01-12 10:42

    This worked for me. You can modify it by yourself.

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

    Maybe this can do your job.

    private async void TEST()
    {
        string script = "Document.GetElementByID('id').value";
        JavascriptResponse response = await browser.EvaluateScriptAsync(script);
        string resultS = response.Result.ToString(); // whatever you need
    }
    
    0 讨论(0)
提交回复
热议问题