Che cos’e’ Watir?

So che magari questo post potra’ annoiare qualcuno, ma io reputo questo strumento un giocattolino molto interessante con un sacco di potenzialita’ anche per i non addetti ai lavori e credo che meriti un piccolo spazio anche qui sul mio blog
e poi il blog e’ mio e ci metto tutto quello che dico io
Dunque il nome WATIR innanzi tutto e’ un acronimo che si estende in “Web App Testing In Ruby” ed e’ in parole spicce una libreria open source per Ruby che permette di testare web-application con funzionalita’ come il click, l’esame delle pagine, la compilazione di campi ecc ecc tutto come se lo si facesse a mano.
non ci ho capito un accipicchia… che cosa e’?
una libreria per Ruby che ti permette di manipolare le pagine web
Con questo simpatico strumento si e’ gia’ divertito qualche furbetto vincendo anche una specie di competizione di chi riceve piu’ click (male regolamentata, quindi in maniera perfettamente legale) ma le possibilita’ sono anche piu’ interessanti
vediamo un tipico esempio: vogliamo inserire una stringa da cercare a google e vedere se effettivamente e’ stato trovato qualcosa di utile
Qui il codice completo
qua sotto un riassunto
require "watir"
test_site = "http://www.google.com"
ie = Watir::IE.new
ie.goto test_site
ie.text_field(:name, "q").set "pickaxe"
ie.button(:name, "btnG").click
if ie.text.include? "Programming Ruby"
puts " Test Passed. "
else puts " Test Failed! "
end

che cosa fa di bello?
niente, cerca “pickaxe” su google e stampa “Test Passed.” se la pagina dei risultati della ricerca contiene la stringa di testo “Programming Ruby”, non so cosa ci fosse nella testa dello sviluppatore al momento della stesura del codice, ma questi sono altri tipi di problemi…
in pratica ho:
inserito del testo nel campo della ricerca di google con il comando
ie.text_field(:name, “q”).set “pickaxe”
cliccato sul tasto di ricerca con
ie.button(:name, “btnG”).click
controllato che ci fosse il risulatato che mi interessa (programming ruby)
ie.text.include? “Programming Ruby”
Gia’ che ci siamo, riporto anche il codice con cui Matteo G.P. Flora ha vinto il concorso:
require 'rubygems'
require 'SafariWatir'
startUrl = "http://paulthewineguy.prohosts.org/"
b = Watir::Safari.new
b.speed = :fast
(1..1000).each do |x|
begin
sleep 60
b.goto(startUrl)begin
b.button(:name, ‘Vota2′).click
rescue
puts ” …non ho trovato il bottone…”
endrescue
puts ” barf… error…”
end
end
In pratica, per mille volte aspetta 60 secondi, va sul sito del concorso e fa click sul bottone “Vota2″, niente di trascendentale insomma…
La sintassi e’ parecchio semplice, ma gli effetti che possimo ottenere sono molto interessanti, potremmo per esempio crearci un bot per qualche browsergame in voga, assicurarci di non perdere un’asta fino a una certa soglia, preparare un bot che commenti automaticamente i post di un blog… il tutto nel rispetto delle norme imposte dal fornitore di servizi (Paolo ne sa qualcosa a proposito di bot, diffide e account eliminati, vero?
)
Chiaramente non e’ l’unico strumento per fare questo genere di lavori, ma indubbiamente e’ uno dei piu’ semplici.
Ecco fatto, spero di essere stato chiaro e/o interessante, perche’ se mi gira faro’ altri post del genere
HomePage del Progetto
Una reference alle API di watir
Una guida introduttiva al Ruby
LastKnight.com - il blog dell’autore del secondo esempio di codice
November 20th, 2007 at 12:41 am
Sempre utile saperne di più.
Good!!
November 20th, 2007 at 1:25 am
Certo che sarebbe stato carino sottolineare che tutto l’ultimo esempio lo hai preso paro paro dal mio articolo, non trovi?
M.
November 20th, 2007 at 2:49 am
Effettivamente hai ragione, avevo messo il link al tuo articolo ma potevo fare qualcosa di piu’ esplicito…
pardon, va bene cosi’?