PDA

View Full Version : [VB.NET] Monitorare GET e POST dal WebBrowser


99caos
22-08-2008, 02:29
Ho da poco cominciato a studiare VB.

In 24 ore ho messo su un controllo WebBrowser capace di fare alcune operazioni basilari e leggere (con un pò di fatica) il contenuto della pagina visualizzata.

Il problema nasce quando degli script JavaScript all'interno del documento visualizzato, effettuano chiamate AJAX al server e aggiornano dei dati.

Non so come monitorare questo evento tramite VB.

Immaginate una tabella che viene aggiornata ogni tot secondi oppure dopo il click di un bottone ma che modifichi i dati con una chiamata asincrona senza refresh della pagina.

L'unico modo che ho per sapere che è stata fatta e recuperare gli aggiornamenti è poter monitorare le chiamate HTTP, ma non ho trovato nel manuale e nelle reference membri della classe WebBrowser capaci di fare questo, ne sono riuscito a capire se qualche altro componente di .NET può fare al caso mio.

Sapreste darmi qualche delucidazione in merito?

nico159
22-08-2008, 13:56
Forse http://selenium.openqa.org potrebbe fare al caso tuo

99caos
22-08-2008, 15:53
Devo manipolare i dati che recupero, inserirli in un database e poi usarli per fare altre azioni.

Non mi sembra che selenium faccia queste cose

nico159
22-08-2008, 16:06
Lo fa :cool:
Ovviamente per la parte riguardante il db ci devi pensare tu :D

99caos
22-08-2008, 16:08
Il sito che mi hai linkato non mostra la guida... sapresti darmi qualche suggerimento per capire come funziona? non trovo documentazione.

nico159
22-08-2008, 16:14
Installi Selenium RC
http://selenium-rc.openqa.org/download.html

Ti scarichi l'estenzione Selenium IDE
http://selenium-ide.openqa.org/download.jsp

Registri tramite FireFox le azioni che devi fare, le esprti sempre tramite Selenium IDE nel tuo linguaggio preferito...e a te il resto :D

Fai conto che Selenium è usato internamente a Google. E' lo strumento che utilizzano per testare tutte le loro web application :cool:

La documentazione su Selenium RC la trovi su
http://selenium-rc.openqa.org/

99caos
23-08-2008, 16:54
Pochi giorni fa ho incontrato Selenium in un libro che trattava di Zend Framework, ma l'avevo sottovalutato. È qualcosa di portentoso.
Grazie infinite per questa illuminazione.

L'ho testato prima in php essendo il linguaggio che conosco meglio ed ora sto effettuando un porting in VB.NET in quanto non posso far girare uno script php per ore...

Ho un problema però.

Non so come parsare l'html grabbato con selenium in .Net.

Usando il webBrowser di .Net posso usare i metodi di document ma se non voglio usare webBrowser non c'è un parser interno a VB che possa fare questo sporco lavoro?

Selenium.getHtmlSource() mi ritorna il codice html del documento.

In php avevo implementato la classe simplehtmldom

che si trova qui:
http://sourceforge.net/projects/simplehtmldom/

questa mi permetteva di fare cose magiche tipo:

$html = str_get_html($selenium.getHtmlSource());
$elemento = $this->html->find('div#idElemento li a');

Che oggetto devo vedere o che .dll implementare?

Ho provato a cercare in rete e nella guida, ma in rete trovo solo parser di documenti remoti e la guida mi da sempre troppi risultati che non riesco a estrapolare.

Successivamente dovrò implementare un accesso a MySql ma per quello credo di aver trovato gia un tutorial.

Tnks

99caos
25-08-2008, 18:20
sono giorni che cerco ma un decente parser per .Net non l'ho trovato

Mixmar
25-08-2008, 20:56
sono giorni che cerco ma un decente parser per .Net non l'ho trovato

Risposta-domanda cross: ma visto che il parser esiste per esempio nella standard library di python (Google: http://docs.python.org/lib/module-HTMLParser.html), non potresti trasformarlo in un eseguibile per il CLR e poi invocarlo, come se fosse una libreria del tuo programma?

Credo che ci sia un compilatore per Python (IronPython) non so se si "tira dietro" anche le librerie standard del pitone.

Cdimauro? :O

99caos
25-08-2008, 21:06
Risposta-domanda cross: ma visto che il parser esiste per esempio nella standard library di python (Google: http://docs.python.org/lib/module-HTMLParser.html), non potresti trasformarlo in un eseguibile per il CLR e poi invocarlo, come se fosse una libreria del tuo programma?

Credo che ci sia un compilatore per Python (IronPython) non so se si "tira dietro" anche le librerie standard del pitone.

Cdimauro? :O

non ho le competenze per rispondere o per provare

Mixmar
26-08-2008, 15:53
non ho le competenze per rispondere o per provare

Neither do I :D

La mia era solo un'esca lanciata sperando che qualche esperto abboccasse e rispondesse al tuo dilemma... :)