Exécution de plusieurs tests de sélénium en même temps
je voudrais exécuter plusieurs Sélénium Tests (sur un serveur Jenkins) en même temps.
il n'exécute actuellement qu'un seul test à la fois car le ChromeDriver semble communiquer sur un port spécial. Donc je suppose que je dois passer quelques paramètres de port via le sélénium au ChromeDriver pour démarrer plusieurs tests.
le site du sélénium est malheureusement vide pour cela sujet: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#parallelizing-your-test-runs
de mon point de vue, cela ne fait aucune différence si le Test se déroule localement ou sur Jenkins, le problème est le même. Nous devons configurer ChromeDriver. La question est de savoir.
Quelqu'un a-t-il des idées ou des indices à consulter et quels sont les fichiers impliqués pour y parvenir?
4 réponses
Ce que vous cherchez est Selenium Grid 2.
Grille vous permet de :
- échelle en distribuant des tests sur plusieurs machines (exécution parallèle )
- gérer plusieurs environnements à partir d'un point central, ce qui rend facile d'exécuter les tests contre une vaste combinaison de navigateurs / OS.
- réduire au minimum le temps de maintenance de la grille en vous permettant de mettre en place des crochets personnalisés pour tirer parti de l'infrastructure virtuelle instance.
Vous pouvez exécuter plusieurs instances de chromedriver localement assez facilement, instanciez simplement plusieurs objets driver, chromedriver gardera les profils séparés et trouvera un port pour exécuter tout seul.
voici un lien vers un exemple qui peut exécuter plusieurs tests en utilisant TestNG et Maven:
https://github.com/Ardesco/Selenium-Maven-Template
il suffit de cloner le projet ci-dessus et exécuter ce qui suit dans la commande ligne:
mvn verify -Pselenium-tests -Dbrowser=chrome -Dthreads=2
Il tire parti de la capacité de TestNG à gérer le pool de threads et ouvrira plusieurs instances si spécifié. Vous pouvez faire la même chose avec jUnit mais vous aurez besoin d'écrire un coureur de test personnalisé pour lancer les tests dans des threads individuels.
si vous décidez d'utiliser gradle il peut gérer les piscines de thread pour vous avec TestNG et jUnit et beaucoup de gens le préfèrent à maven.
C'est une vieille question, mais pour quiconque lit encore, il est très possible d'exécuter plusieurs instances de WebDriver de sélénium en parallèle sans en utilisant la grille. J'ai testé cela avec succès en utilisant Chrome, FireFox, et PhantomJs (jusqu'à 5). Chaque instance de WebDriver utilise un contexte isolé, donc le conflit de session ne devrait pas être un problème. Méfiez-vous des conflits côté serveur, cependant, en fonction des exigences de votre site web!
pour les utilisateurs NUnit, NUnit 3.2.1 a maintenant a ' TestContext.Actuel.La propriété WorkerId' qui vous permettra d'isoler une instance WebDriver par NUnit worker.
- L'exécution de plusieurs navigateurs sur la même machine entravera souvent les performances, alors faites attention à ne pas utiliser trop d'instances de navigateurs, ou vous pouvez en fait augmenter votre temps de test!
je suis d'accord à l'aide de la grille en combinaison avec Maven parallélisée de classe, vous pouvez exécuter plusieurs instances dans un PC. Jenkins est possible lorsque vous utilisez Ant pour votre Compilation ,alors vous pouvez spécifier quel test peut être exécuté en parallèle. Son assez facile à mettre en il bien ;)