Automating web applications for testing
Perl, come sempre, viene in aiuto poiché rende facili le cose facili e possibili quelle difficili. Una soluzione che stiamo utilizzando è WWW::Selenium disponibile su CPAN ed è l'interfaccia client verso il Selenium server (in Java) che si occuperà di inviare tramite xmlhttprequest le richieste al browser.
Un piccolo esempio delle potenzialità:
use Modern::Perl; use WWW::Selenium; my $sel = WWW::Selenium->new( host => "localhost", port => 4444, browser => "*firefox", browser_url => "file://blank.htm", ); $sel->start; $sel->open("http://www.google.it/"); my $result=$sel->get_html_source(); open my $fh,'>','page.html' or die "$!\n"; binmode($fh, ":utf8"); print $fh $result; close $fh; $sel->stop;
Il metodo get_html_source rende l'intero contenuto tra i tag <html>...</html>. Vi sono poi diversi altri metodi per pilotare (letteralmente) il browser.
Di seguito il breve video di un nostro test in cui viene lanciato lo script che avvia il browser, carica un sito, effettua un click aprendo dei risultati invocati tramite AJAX e quindi salva la pagina risultante.
La tecnica può essere utilizzata, oltre che per effettuare testing, anche per costruire dei parser nei casi in cui il sito target adopera javascript/AJAX per cui occorre, necessariamente, intepretare lo scripting client-side.