2013-04-18 12 views
5

Sto usando Awesomium 1.7.0.5 per caricare una pagina, riempire alcune caselle di testo e fare clic su un pulsante. Sto cercando di riempire una casella di testo con un esempio da questa discussione: http://answers.awesomium.com/questions/857/webcontrol-type-in-webbrowser.htmlAwesomium .NET: il documento non è pronto nell'evento DocumentReady?

Ecco il mio codice (sto usando controllo WPF):

 private void WbAwsOnDocumentReady(object sender, UrlEventArgs urlEventArgs) 
     { 
      if (wbAws == null || !wbAws.IsLive) 
       return; 

      //Thread.Sleep(555); 

      dynamic document = (JSObject)wbAws.ExecuteJavascriptWithResult("document"); 

      if (document == null) 
       return; 

      using (document) 
      { 
       dynamic textbox = document.getElementById("email"); 

       if (textbox == null) 
        return; 

       using (textbox) 
       { 
        textbox.value = "gaaffa"; 
       } 

      } 
     } 

Funziona ma solo con Thread.Sleep per 0,1-0,5 sec. Altrimenti il ​​documento è vuoto (non nullo) e/o la casella di testo è nullo. Cosa devo fare? Perché non è pronto in DocumentReadyEvent?

+0

Hai provato l'evento FinishLoading? – KF2

+0

hm ... Non esiste un evento del genere. – AlexP11223

+0

sto lavorando con ver 1.6, ha questo event.but puoi controllare se documento == null esegue nuovamente il metodo WbAwsOnDocumentReady finché il valore del box di testo impostato – KF2

risposta

4

Ecco come ho risolto:

 WbAws.LoadingFrameCompleted += OnLoadingFrameCompleted; 
    WbAws.Source = new Uri("http://google.com"); 

private void OnLoadingFrameCompleted(...) 
{ 
    if (webView == null || !webView.IsLive || 
     webView.ParentView != null || !e.IsMainFrame) 
    return; 

    LoadingFrameCompleted -= OnLoadingFrameCompleted; 

    // do something 
} 

LoadingFrameCompleted invece di DocumentReady e perché gli incendi non solo quando ne ho bisogno, ma anche all'avvio app mi abbono a poco prima la navigazione e cancellare dopo di esso. Controllando anche che sia IsMainFrame.

modifica: ma con questa soluzione a volte genera un'eccezione che il documento non è pronto. Quindi lo sto aspettando anche usando Thread.Sleep.

Problemi correlati