18/08/11 19:47
Metal
Sono ancora qui con sto bot.
Posto il codice che uso per fare il login (funzionante, il login lo fa), così si capisce meglio:
indirizzo1 = pagina di login
indirizzo2 = dopo il login, devo navigare a questo indirizzo (finita di caricare la pagina, l'url diventa indirizzo2.5)
indirizzo3 = pagina della quale mi serve il sorgente
WriteToTxt = funzione che mi crea sul desktop un file di testo contenente il sorgente della pagina
Il problema è che nel file che mi crea sul desktop c'è il sorgente della pagina "indirizzo2.5" anziché quello della pagina "indirizzo3". E' come se non aspettasse il caricamento della pagina "indirizzo3" prima di eseguire lo stage == 4
Ho provato anche a mettere il tutto in una funzione separata, chiamata dalla pressione di un bottone nella GUI, fatta così:
ma il risultato non è cambiato...
Posto il codice che uso per fare il login (funzionante, il login lo fa), così si capisce meglio:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (stage == 0) { webBrowser1.Navigate("indirizzo1"); txtState.Text = "State " + stage; stage++; } else if (stage == 1) { webBrowser1.Document.GetElementById("contact_username").SetAttribute("value", txtUser.Text); webBrowser1.Document.GetElementById("contact_password").SetAttribute("value", txtPass.Text); HtmlElementCollection allElements = webBrowser1.Document.All; foreach (HtmlElement webPageElement in allElements) { if (webPageElement.GetAttribute("value") == "Login") webPageElement.InvokeMember("click"); } txtState.Text = "State " + stage; stage++; } else if (stage == 2) { webBrowser1.Navigate("indirizzo2"); txtState.Text = "State " + stage; stage++; } else if (stage == 3) { webBrowser1.Navigate("indirizzo3"); txtState.Text = "State " + stage; stage++; } else if (stage == 4) { oBot.WriteToTxt(webBrowser1.DocumentText); txtState.Text = "State " + stage; stage++; } }
indirizzo1 = pagina di login
indirizzo2 = dopo il login, devo navigare a questo indirizzo (finita di caricare la pagina, l'url diventa indirizzo2.5)
indirizzo3 = pagina della quale mi serve il sorgente
WriteToTxt = funzione che mi crea sul desktop un file di testo contenente il sorgente della pagina
Il problema è che nel file che mi crea sul desktop c'è il sorgente della pagina "indirizzo2.5" anziché quello della pagina "indirizzo3". E' come se non aspettasse il caricamento della pagina "indirizzo3" prima di eseguire lo stage == 4
Ho provato anche a mettere il tutto in una funzione separata, chiamata dalla pressione di un bottone nella GUI, fatta così:
web.Navigate("indirizzo1"); while (web.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); web.Document.GetElementById("contact_username").SetAttribute("value", user.Text); web.Document.GetElementById("contact_password").SetAttribute("value", pass.Text); HtmlElementCollection allElements = web.Document.All; foreach (HtmlElement webPageElement in allElements) { if (webPageElement.GetAttribute("value") == "Login") webPageElement.InvokeMember("click"); } while (web.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); web.Navigate("indirizzo2"); while (web.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); web.Navigate("indirizzo3"); while (web.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); oBot.WriteToTxt(webBrowser1.DocumentText);
ma il risultato non è cambiato...
Ultima modifica effettuata da Metal 18/08/11 19:51
aaa