2017-08-11 8 views
1

イムDotNetBrowserを使用して複数のページをロードしようとしている、と私は新しいURLがロードされるたびに、知っておく必要があり、DotNetBrowser FinishLoadingFrameEvent複数使用

myBro.FinishLoadingFrameEvent += delegate (object send, FinishLoadingEventArgs es) 
      {   
    if (es.IsMainFrame && es.ValidatedURL.Contains("login")) 
       { 
        DOMDocument document = myBro.GetDocument(); 
        DOMElement user = document.GetElementById("LoginForm_login"); 
        user.SetAttribute("value", "email"); 
        DOMElement pass = document.GetElementById("LoginForm_password"); 
        pass.SetAttribute("value", "pass"); 
        DOMElement loginbtn = document.GetElementByTagName("button"); 
        loginbtn.Click(); 

    // can't add nothing more here // 

}; 

が、このコードは、最初のページがロードされている場合にのみ、お知らせし

+0

ねえ、あなたはこのためにどんな解決策を見つけましたか? – mathew

答えて

1

FinishLoadingFrameEventは、ページがリロードされた後であっても、ウェブページにロードされた各フレームに対して発生します。 LoadURLメソッドが呼び出された後、ブラウザがWebページを完全にロードしたときに、複数回使用して通知を受けることができます。ここで

は、ドキュメントの記事https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110055-loading-url-synchronouslyに基づいてサンプルコードです:

ManualResetEvent waitEvent = new ManualResetEvent(false); 
browser.FinishLoadingFrameEvent += delegate(object sender, FinishLoadingEventArgs e) 
{ 
    // Wait until main document of the web page is loaded completely. 
    if (e.IsMainFrame) 
    { 
     waitEvent.Set(); 
    } 
}; 

//Load URL 
browser.LoadURL("http://www.google.com"); 
waitEvent.WaitOne(); 
//The page http://www.google.com is now loaded completely 

//Then, reset the event and load the next URL 
waitEvent.Reset(); 
browser.LoadURL("http://www.microsoft.com"); 
waitEvent.WaitOne(); 
//The page http://www.microsoft.com is now loaded completely 
関連する問題