Publié par

Il y a 10 ans -

Temps de lecture 3 minutes

Selenium – Could not start Selenium session: Internal Server Error

Lors de l’intégration des tests unitaires Selenium avec Hudson sur un environnement graphique Linux, j’ai été confronté à l’exception « Selenium – Could not start Selenium session : Failed to start new browser session : Error while launching browser » qui empêchait Selenium Remote Control (RC) d’ouvrir une instance du navigateur Firefox pour le jeu des tests.

La trace de l’exception est la suivante :

java.lang.RuntimeException: Could not start Selenium session: Failed to start new browser session: Error while launching browser
	at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:89)
	at com.mycompany.selenese.util.HomePageTest.setUp(BaseTestCase.java:39)
	at junit.framework.TestCase.runBare(TestCase.java:125)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:118)
(30 more lines...)

En fouillant un peu, j’ai constaté que cette exception est dûe principalement à une mauvaise configuration du profil Firefox utilisé pour le jeu des tests. Il est cependant possible de la résoudre en positionnant la variable browser avec la valeur « *firefox » suivie d’un espace et du chemin absolu du bin Firefox sur le système cible (firefox.exe sous windows et firefox-bin sous linux).

Exemple :

SeleniumServer seleniumServer = new SeleniumServer();
seleniumServer.start();
Thread.sleep(2000);
Browser browser = new Browser("localhost", 4444, "*firefox /usr/local/firefox-3.5/firefox-bin", "http://wwww.google.fr");
browser.start();

Mais malgré cette option, l’exception restait présente… étrange.

Après quelques recherches plus poussées, je suis tombé sur la solution du problème qui consistait à créer un profil firefox dédié aux tests Selenium automatisés :

  • Cliquer sur Démarrer>Exécuter…
  • Exécuter la commande firefox.exe -ProfileManager -no-remote
  • Sélectionner « Créer un profil »
  • Cliquer sur « Suivant »
  • Donner le nom « selenium » au profil
  • Cliquer sur « Terminer »
  • Cocher l’option « Ne pas demander au démarrage »
  • Démarrer une instance de Firefox et appliquer les configurations citées ci-dessous
  • Revenir au profil « default » (pour rétablir les paramètres par défaut)
  • Ajouter le paramètre -firefoxProfileTemplate en ligne de commande lors du démarrage du serveur Selenium : java -jar selenium-server.jar -firefoxProfileTemplate « <Répertoire du profil selenium> »

Paramétrage du profil Selenium :
Décocher les éléments sélectionnés dans le menu « AffichageBarres d’outils »
Cliquer sur « OutilsOptions » :

  • Sélectionner l’onglet « Général »
    • Mettre à jour la page d’accueil à « about:blank »
    • Décocher l’option « Afficher la fenêtre Téléchargements … »
  • Sélectionner l’onglet « Onglets »
    • Cocher l’option « Ouvrir un nouvel onglet … »
    • Cocher l’option « Lors de l’ouverture … »
    • Décocher les autres options
  • L’onglet « Contenu »
    • Décocher l’option « Bloquer les fenêtres popup »
  • L’onglet « vie privée »
    • Sélectionner la valeur « ne jamais conserver l’historique » dans les règles de conservation
  • L’onglet « Sécurité »
    • Décocher toutes les options
    • Cliquer sur le bouton paramètres
    • Décocher toutes les options
  • L’onglet « Avancé »
    • Décocher l’option « Utiliser le défilement automatique »
    • Décocher les options « Les moteurs de recherche » et « Avertir si cela désactive des modules » dans l’onglet « Mise à jour »

Cliquer sur « OutilsModules complémentaires » et installer les modules suivants :

  • Firebug: permet d’inspecter et d’éditer du code HTML, CSS et du DOM d’une page web.
  • Selenium IDE: permet d’enregistrer des scénarios de tests selenium, et de les éditer.
  • ScreenGrab: enregistre des pages web en image.

Taper « about:config » dans la barre d’adresse et ajouter ce qui suit :

  • extensions.update.notifyUser (type=boolean; valeur=false)
  • extensions.newAddons (type=boolean; valeur=false)

Avec cette solution, une nouvelle instance de Firefox avec le profil Selenium est créée à chaque démarrage des tests et l’exception ne sera plus présente ! En espérant que cette solution puisse vous aider !

Publié par

Commentaire

2 réponses pour " Selenium – Could not start Selenium session: Internal Server Error "

  1. Publié par , Il y a 10 ans

    La gestion des erreurs avec Selenium est assez désastreuse, j’ai également passé beaucoup de temps et rencontré la même erreur en faisant fonctionner le tout sur un serveur sans serveur X sur une usine de développement. Dommage qu’il n’y ait que Selenium, car qualitativement, on peut mieux faire.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Xebian, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.