Selenium webdriver e firefox con sessioni multiple

Mi sono imbattuto in una serie di problemi che grazie a google sono riuscito a superare, ma purtroppo la documentazione trovata è molto frammentata, alla fine sono riuscito a far funzionare il tutto e a lanciare i test correttamente.

Il primo problema è dato dalla versione del browser Firefox, non tutte le versioni sono compatibili. Mozilla rilascia spesso nuove versioni e non è detto che il webdriver di selenium si interfacci correttamente. Alla fine sono riuscito a trovare un documento che assicurava che la versione 34 di Firefox funzionava a meraviglia.

Ho preso una versione portable di firefox 34 ed effettivamente il test che avevo preparato funziona. Viene lanciato il browser portable e aperta la pagina, ed effettuato il test.

Fantastico.

La gioia è durata poco. Di solito programmo con Firefox aperto e questo impedisce l’esecuzione di una seconda istanza del browser. Quindi niente test se prima non chiudo il browser di lavoro. Decisamente frustrante.

Dopo alcune prove prive di successo, ho scelto allora di installare Firefox 34, con un’installazione pulita, fiducioso che qualche soluzione ci fosse.

Il problema che si è presentato è che al lancio della nuova installazione è partito l’aggiornamento automatico che me l’ha riportata alla più recente. Occorre quindi disabilitare l’aggiornamento automatico dalle opzioni del browser.

Per evitare di interferire con il browser principale occorre creare un profilo da caricare ad ogni esecuzione.

Dopo aver preparato il profilo, ho disinstallato e ripristinato la ver 34 pulita.

Vediamo di risolvere il lancio di istanze multiple del browser, anche di versioni diverse. Cercando su google ho trovato che è un problema sentito, ma la documentazione è ben nascosta. Sopratutto quella riguardante i parametri da passare al browser nella linea di comando. L’importante è che ci siano queste possibilità.

Occorre preparare un profilo da far caricare al lancio di firefox, nelle impostazioni di firefox occorre disabilitare l’update automatico, altrimenti cercherà di passare alla versione più aggiornata. Ed ecco i parametri da utilizzare per risolvere il problema.

[code]
firefox.exe -P nomeProfilo -no-remote
[/code]

Fatto tutto questo siamo pronti per lanciare il server standalone  selenium o un nodo del grid, occorre specificare il path dell’eseguibile e il nome del profilo da forzare con i seguenti parametri (presi dalla seguente guida):

[code]
-Dwebdriver.firefox.bin="c:\Program Files (x86)\Mozilla Firefox\Ver34\firefox.exe" -Dfirefox_profile=ver34

[/code]

 

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *