Che cos’e’ Watir?

ha_ha_guy.jpg

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

watir.gif

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…”
end

rescue
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? :D )

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

3 Responses to “Che cos’e’ Watir?”

  1. khall Says:

    Sempre utile saperne di più.
    Good!! :P

  2. Matteo G.P. Flora Says:

    Certo che sarebbe stato carino sottolineare che tutto l’ultimo esempio lo hai preso paro paro dal mio articolo, non trovi?

    M.

  3. motocarota Says:

    Effettivamente hai ragione, avevo messo il link al tuo articolo ma potevo fare qualcosa di piu’ esplicito…
    pardon, va bene cosi’?

Leave a Reply