Robotica?

Ciao,
vorrei scrivere uno script che mi funge un po’ da robot http. Una
specie di macro, insomma. Dovrebbe collegarsi ad un sito, fare login,
navigare per un po’ di link e cliccare un po’ di bottoni ecc.
Immagino
che potrei farlo con una serie di richieste usando Net::HTTP (farÃ
ben
post e login ecc?), ma in qualche modo mi pare … boh … poco
elegante. Anche perché dopo ogni richiesta dovrei verificare che la
risposta è quella “giusta” (cioè oltre al response code 200) e per
ogni modifica alla pagina web remota potrebbe andare a culo…
Come fareste voi? Mi ci vorrebbe una specie di hpricot del HTTP
tipo…

On 11/29/06, david [email protected] wrote:

Ciao,
vorrei scrivere uno script che mi funge un po’ da robot http. Una
specie di macro, insomma. Dovrebbe collegarsi ad un sito, fare login,
navigare per un po’ di link e cliccare un po’ di bottoni ecc. Immagino

Se l’idea è di fare test di un’applicazione web, ti potrebbe
interessare Selenium (http://www.openqa.org/selenium/) oppure watir
(http://wtr.rubyforge.org/)

che potrei farlo con una serie di richieste usando Net::HTTP (farà ben
post e login ecc?), ma in qualche modo mi pare … boh … poco
elegante. Anche perché dopo ogni richiesta dovrei verificare che la
risposta è quella “giusta” (cioè oltre al response code 200) e per
ogni modifica alla pagina web remota potrebbe andare a culo…

Beh, non dimenticare il potere delle subroutine… :slight_smile: definisci un
metodo che richiede una pagina e gestisce i vari possibili status
come serve a te.

Matteo

Selenium no perché gira nel browser e Watir nemmeno perché va solo su
Win…
Hmmm. Peccato però! Entrambi sembrano carini assai, in particolar modo
watir sembra esattamente quello che cercavo… Ma perché non hanno
usato spidermonkey (l’engine JS di mozilla) che è crossplatform e
tutto…
Matteo V. wrote:

 On 11/29/06, david [1]<[email protected]> wrote:

    Ciao,
    vorrei scrivere uno script che mi funge un po' da robot http.
 Una
    specie di macro, insomma. Dovrebbe collegarsi ad un sito, fare
 login,
    navigare per un po' di link e cliccare un po' di bottoni ecc.
 Immagino

 Se l'idea è di fare test di un'applicazione web, ti potrebbe
 interessare Selenium ([2]http://www.openqa.org/selenium/) oppure
 watir
 ([3]http://wtr.rubyforge.org/)

    che potrei farlo con una serie di richieste usando Net::HTTP
 (farà ben
    post e login ecc?), ma in qualche modo mi pare ... boh ... poco
    elegante. Anche perché dopo ogni richiesta dovrei verificare che
 la
    risposta è quella "giusta" (cioè oltre al response code 200) e
 per
    ogni modifica alla pagina web remota potrebbe andare a culo...

 Beh, non dimenticare il potere delle subroutine... :-)  definisci
 un
 metodo che richiede una pagina e gestisce  i vari possibili status
 come serve a te.
 Matteo


“Remember, always be yourself. Unless you suck.” - Joss Whedon

References

  1. mailto:[email protected]
  2. http://www.openqa.org/selenium/
  3. http://wtr.rubyforge.org/

Forse è un pò OT, ma JMeter http://jakarta.apache.org/jmeter/ permette di
fare test di carico di applicazioni web, supporta post e get etc…
se poi hai voglia di esplorare, badboy http://www.badboy.com.au/
registra
le interazioni con il browser ed esporta test in formato JMeter.

Se l’applicazione invece è tua ed è scritta in rails gli IntegrationTest
dovrebbero bastare.

Paolo

On 11/29/06, david [email protected] wrote:

 On 11/29/06, david [1]<[email protected]> wrote:
 interessare Selenium ([2]http://www.openqa.org/selenium/) oppure
    ogni modifica alla pagina web remota potrebbe andare a culo...

References

  1. mailto:[email protected]
  2. http://www.openqa.org/selenium/
  3. http://wtr.rubyforge.org/

Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Another point of view

[email protected]
personal http://paolodona.blogspot.com

Forse è un pò OT, ma JMeter http://jakarta.apache.org/jmeter/
permette di
fare test di carico di applicazioni web, supporta post e get etc…
se poi hai voglia di esplorare, badboy http://www.badboy.com.au/
registra
le interazioni con il browser ed esporta test in formato JMeter.

Ma funziona headless? Cioè, una volta esportato il “test” in formato
JMeter, posso eseguirlo n volte da un demone o cronjob? (ora ci guardo
da me cmq…!)

Se l’applicazione invece è tua ed è scritta in rails gli IntegrationTest
dovrebbero bastare.

Nope. Purtroppo è roba altrui e tocca fare un po’ di reverse engineering
per arrivarci… Praticamente devo

  • fare login (un POST con usr/pwd immagino)
  • navigare per pagina A, B e C e attivare un link D (salto magari
    diritto a C)
  • nel popup che si apre, spuntare un po’ di checkbox e fare “submit” (un
    altro POST?)

Cioè, non è nulla di assurdamente difficile in realtà, ma è un po’
fragile. Mi piaceva farlo in maniera generica e maintainable, ma alla
peggio faccio a manoni…

modo
specie di macro, insomma. Dovrebbe collegarsi ad un sito, fare
(farà ben
come serve a te.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


“Remember, always be yourself. Unless you suck.” - Joss Whedon

Se l’idea è di fare test di un’applicazione web, ti potrebbe
interessare Selenium (http://www.openqa.org/selenium/) oppure watir
(http://wtr.rubyforge.org/)

Per l’ultimo argomento c’è pure un bel articolo in italiano su The Ruby
Mine
http://www.therubymine.com/articles/2006/11/13/watir-il-tuo-telecomandone


Andrea R.

: : i’m a miner : : | therubymine.com

On 11/29/06, david [email protected] wrote:

Selenium no perché gira nel browser e Watir nemmeno perché va solo su
Win…
Hmmm. Peccato però! Entrambi sembrano carini assai, in particolar modo
watir sembra esattamente quello che cercavo… Ma perché non hanno
usato spidermonkey (l’engine JS di mozilla) che è crossplatform e
tutto…

Probabilmente MozRepl (by yours truly) non è altrettanto raffinato, ma
qualcuno in Giappone pare essersi divertito abbastanza a pilotarlo da
Ruby:

http://d.hatena.ne.jp/omochist/20061028/1162045854
http://d.hatena.ne.jp/omochist/20061020/1161334958
http://la.ma.la/blog/diary_200609280045.htm
http://d.hatena.ne.jp/hiboma/20060929/1159477133

Una birra a chi mi dice se ne parlano bene…


Massimiliano M.
code: http://dev.hyperstruct.net
blog: http://blog.hyperstruct.net

On 29/nov/06, at 13:02, david wrote:

elegante. Anche perché dopo ogni richiesta dovrei verificare che la
risposta è quella “giusta” (cioè oltre al response code 200) e per
ogni modifica alla pagina web remota potrebbe andare a culo…
Come fareste voi? Mi ci vorrebbe una specie di hpricot del HTTP
tipo…

Net::HTTP per certe cose è paurosamente scomoda, ti consiglio
WWW::Mechanize: http://mechanize.rubyforge.org/ .
Dai uno sguardo agli esempi: http://mechanize.rubyforge.org/files/
EXAMPLES.html .


“Remember, always be yourself. Unless you suck.” - Joss Whedon



Gabriele M.

On 11/29/06, david [email protected] wrote:

peggio faccio a manoni…
Usa curl…

M

Net::HTTP per certe cose è paurosamente scomoda, ti consiglio
WWW::Mechanize: http://mechanize.rubyforge.org/ .
Dai uno sguardo agli esempi:
http://mechanize.rubyforge.org/files/EXAMPLES.html .

Sembra ECCELENTE. Grazie davvero. Ora mi ci butto.

:slight_smile:


“Remember, always be yourself. Unless you suck.” - Joss Whedon