Esecuzione di più test al selenium contemporaneamente

Vorrei eseguire più test selenium (su un server Jenkins) allo stesso tempo.

Al momento esegue solo un singolo test alla volta, poiché ChromeDriver sembra comunicare su una porta speciale. Quindi, in qualche modo, credo che devo passare alcune impostazioni di porta tramite Selenium sul ChromeDriver per avviare più test.

Il sito Selenium purtroppo è vuoto per questo argomento: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#parallelizing-your-test-runs

Dal mio punto di vista non fa alcuna differenza se il test viene eseguito localmente o su Jenkins, il problema è lo stesso. Dobbiamo in qualche modo configurare ChromeDriver. La domanda è come.

Qualcuno ha alcune idee o indicazioni su dove guardare e quali file sono coinvolti per ottenere questo risultato?

Quello che stai cercando è Selenium Grid 2 .

Grid ti consente di:

  • scala distribuendo test su più macchine (esecuzione parallela)
  • gestire più ambienti da un punto centrale, semplificando l’esecuzione dei test contro una vasta combinazione di browser / sistema operativo.
  • ridurre al minimo i tempi di manutenzione della rete, consentendo di implementare ganci personalizzati per sfruttare l’infrastruttura virtuale, ad esempio.

Puoi eseguire più istanze di chromedriver localmente abbastanza facilmente, basta istanziare più oggetti driver, chromedriver manterrà i profili separati e troverà una porta da eseguire da solo.

Ecco un collegamento a un esempio che può eseguire più test utilizzando TestNG e Maven:

https://github.com/Ardesco/Selenium-Maven-Template

Basta clonare il progetto precedente ed eseguire quanto segue nella riga di comando:

mvn verify -Pselenium-tests -Dbrowser=chrome -Dthreads=2 

Sfrutta la capacità di TestNG di gestire il pool di thread e aprirà più istanze se specificato. Puoi fare la stessa cosa con jUnit ma dovrai scrivere un test runner personalizzato per sparare i test nei singoli thread.

Se decidi di utilizzare gradle, può gestire la gestione dei pool di thread per te sia con TestNG che con jUnit e molte persone preferiscono farlo.

Questa è una vecchia domanda, ma per chiunque stia ancora leggendo, è molto ansible eseguire più istanze di Selenium WebDriver in parallelo senza usare Grid. Ho testato con successo questo utilizzando Chrome, FireFox e PhantomJs (fino a 5). Ogni istanza di WebDriver utilizza un contesto isolato, quindi il conflitto di sessione non dovrebbe essere un problema. Fai attenzione ai conflitti tra server, a seconda dei requisiti del tuo sito web!

Per gli utenti NUnit, NUnit 3.2.1 ora ha una proprietà ‘TestContext.Current.WorkerId’ che consente di isolare un’istanza WebDriver per lavoratore NUnit.

  • L’esecuzione di più browser sulla stessa macchina spesso ostacola le prestazioni, quindi fai attenzione a non utilizzare troppe istanze di browser o potresti effettivamente aumentare il tempo di test!

Accetto l’utilizzo della griglia in combinazione con la class parallelizzata Maven, è ansible eseguire più istanze in un PC. Jenkins è ansible quando si utilizza Ant per la build, quindi è ansible specificare quale test può essere eseguito parallelamente. È abbastanza facile da configurare però;)