web-dev-qa-db-ja.com

CefSharp-HTML要素の値を取得

CefSharpでHTML要素の値を取得するにはどうすればよいですか?

このデフォルトのWebBrowserコントロールを使用する方法を知っています。

Dim Elem As HtmlElement = WebBrowser1.Document.GetElementByID("id")

しかし、CefSharpに似たものは見つかりませんでした。私がCefSharpを使用している主な理由は、Webサイトの一部がiframeを使用してソースを格納しており、デフォルトのWebブラウザーがそれをサポートしていないためです。また、CefSharpにはInvokeMemberまたは同様の呼び出しのオプションがありますか?

ちなみにCefSharpの最新リリースを使っています。

5
user3397557

彼らのFAQにこれを行う方法の本当に良い例があります。

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

これがレイジーのコードです。かなり自明で、それは私にはうまくいきました。

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.
        }      
    });
11
RobbZ

これが私のために働いた唯一の方法、バージョン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);
        }
    }
1
i31nGo

これでうまくいきました。自分で変更できます。

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
}
0
berkhan
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();
        }
    }
});

それは私のために働いています。

0
Triệu Đô La