2016-06-08 19 views
2

CefSharp로 HTML 요소의 값을 얻으려면 어떻게해야합니까? CefSharp - HTML 요소의 값 얻기

나는이 기본 웹 브라우저 컨트롤을하는 방법을 알고

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

하지만 CefSharp 비슷한 아무것도 찾지 못했습니다. CefSharp를 사용하는 가장 큰 이유는 웹 사이트의 일부가 iframe을 사용하여 소스를 저장하고 있기 때문에 기본 WebBrowser가 지원하지 않기 때문입니다. 또한 CefSharp에 InvokeMember 또는 이와 유사한 호출 옵션이 있습니까?

나는 CefSharp의 최신 릴리스를 사용하고 있습니다.

+0

당신은 MSHTML.IHTMLDocument2에 문서를 캐스팅해야 , 내가 정확히 기억한다면. –

+0

우선 'CefSharp FAQ'를 읽어보십시오. 내장 된 컨트롤을 대체 할 가능성이 없다는 것을 기억해야합니다. – amaitland

+0

당신은'HtmlElement Elem = webBrowser1.Document.GetElementById ("id");' –

답변

-2

CefSharp를 사용하면 javascript로 요소 값을 가져올 수 있습니다. 예를 들어

, 자바 스크립트에 대해

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

, 당신은 w3s에서 배울 수 있습니다.

그리고 나는 this passage을 읽어야한다고 생각합니다.

재미있게 보내십시오.

+6

을 시도해 보았습니다. 어떤 값도 반환하지 않습니다. –

3

자주 묻는 질문에이 작업을 수행하는 방법에 대한 좋은 예가 있습니다. 여기

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. 
     }  
    }); 
+0

테스트 해 보셨습니까? – Nulle

+0

네, 따라서 "나에게 잘 맞았습니다" – RobbZ

+0

나는 browser.EvaluateScriptAsync (스크립트)를 아직 사용할 수 없었습니다. browser.GetMainFrame.ExecuteJavascriptAsync (script) 있습니다. – Nulle

-1

이 나를 위해 일한 유일한 방법 버전 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); 
     } 
    }