Testare con Selenium


Selenium è una suite di strumenti specifici per effettuare il test delle applicazioni web.
Vediamo passo passo come effettuare dei test con questo efficace strumento. 
1)      Installare il selenium IDE in Firefox


Questo strumento consente di registrare dei test  direttamente da firefox.Una volta effettuato il test sarà possibile vedere il codice sorgente relativo al nostro test.L’impostazione di default è che la registrazione parte in automatico non appena parte il Selenium IDE, è pertanto necessario modificarla.Una volta registrato esportiamo lo script relativo alla registrazione nel linguaggio da noi desiderato.
In questo esempio ho registrato un semplice test navigano nelle diverse sezioni di questo blog ed ho esportato in java lo script che ne risulta.
Quindi ho ottenuto una cosa di questo tipo:



import org.testng.annotations.Test;

import com.thoughtworks.selenium.SeleneseTestNgHelper;

public class test_java extends SeleneseTestNgHelper {

      @Test  
public void testTest_java() throws Exception {
            selenium.open("/p/implementare-un-converter-in-javaserver.html");
            selenium.click("link=Converter JSF");
            selenium.waitForPageToLoad("30000");
            selenium.click("link=Home page");
            selenium.waitForPageToLoad("30000");
            selenium.click("//img[contains(@src,'http://3.bp.blogspot.com/_brTXXlH0Lsg/THuqlh3THQI/AAAAAAAAAAw/oK3m7pLykmU/s400/report__3.JPG')]");
            selenium.waitForPageToLoad("30000");
      }
}





Le librerie necessarie relative a testNG ed a selenium vanno scaricate in modo da poter far girare i test.
A questo punto per poter far girare il server come descritto nella guida:


semplicemente spostandosi nella directory dove è presente selenium-server.jar e avviare il server con il comando  java -jar selenium-server.jar.

aggiungiamo al test che abbiamo esportato un altro breve frammento di codice utilizzando le annotazioni di TestNG:

@BeforeTest
      public void setUp() throws Exception {
        setUp("http://javapassionblog.blogspot.com/", "*firefox");
             // We instantiate and start the browser
      }

Questo ci dice il browser che verrà usato,nonché l’indirizzo della pagina principale.
A questo punto scegliendo Run AS àTestNg test avremo il seguente errore  :

403 Error_Message = Forbidden+for+Proxy

Esaminando alcuni forum sembra che questo errore sia dovuto all’annotazione utilizzata per il TestNG @BeforeTest.
Il suggerimento era quello di spostare tale codice direttamente all’interno  del  test .

Quindi  ecco ciò che otteniamo:

@Test 
public void testTest_java() throws Exception {
             setUp("http://javapassionblog.blogspot.com/", "*firefox");
            selenium.open("/p/implementare-un-converter-in-javaserver.html");
            selenium.click("link=Converter JSF");
            selenium.waitForPageToLoad("30000");
            selenium.click("link=Home page");
            selenium.waitForPageToLoad("30000");
            selenium.click("//img[contains(@src,'http://3.bp.blogspot.com/_brTXXlH0Lsg/THuqlh3THQI/AAAAAAAAAAw/oK3m7pLykmU/s400/report__3.JPG')]");
            selenium.waitForPageToLoad("30000");
      }

Eseguiamolo e vedremo aprirsi il Selenium Remote Control composto da una command history in cui verrano elencati i comandi eseguiti:
 getTitle()
setContext(99e15e4e6edd45d4a145e298d6a8e82c)
setContext(test_java.testTest_java).

Contemporaneamente Firefox andrà ad eseguire i test che avevamo registrato presenti nel nostro testTest_java() ,concluso il test, l'IDE  ci segnalerà che il test si è concluso con successo.



ESEMPIO 2 :

  public class GoogleTest extends TestCase {

        private Selenium browser;
       
public void setUp() {
            browser = new DefaultSelenium("localhost",
                4444, "*firefox", "http://www.google.com");
            browser.start();
        } 
            public void testGoogle() {
            browser.open("http://www.google.com/webhp?hl=en");
            browser.type("q", "hello world");
            browser.click("btnG");
            browser.waitForPageToLoad("5000");
            assertEquals("hello world - Google Search", browser.getTitle());
        }
      
        public void tearDown() {
            browser.stop();
        }
    }