Selenium permet d’automatiser les tests de navigation et de soumission de ses applications web comme dis précédemment. Mais ici je vais parler de la mise en place du serveur Selenium. Celui-ci permet de mettre à disposition un daemon utilisable pour :
- exécuter un scénario en console
- via tâche cron
- via l’intégrer dans ses propres outils
Cela permet d’exécuter une multitude de scénario de manière régulière.
Il faut donc mettre en place un environnement xvfb avec un navigateur web (iceweasel). Le serveur va écouter sur le port 4444 et utiliser le navigateur pour simuler la navigation. Tout cela avec des scripts de démarrage automatique.
Pour créer les scénarios, voici l’article sur le plugin de Firefox.
Installer fake-X XVFB
Installation des dépendances nécessaires. Java pour Selenium server, xvfb pour émuler un serveur X afin de lancer firefox/iceweasel sans installer toute les dépendances de X. Et le navigateur choisi.
apt-get install sun-java6-jre xvfb icexeasel mkdir /opt/selenium cd /opt/selenium/ wget http://selenium-release.storage.googleapis.com/2.42/selenium-server-standalone-2.42.2.jar
Attention il n’y a pas de script d’init fourni avec le paquet xvfb. Soit on l’utilise dans le script selenium, soit on fait propre avec un script init dédié. Voir le script init de gmonfort pour xvfb.
On le met dans /opt/selenium/xvfb-init.d.sh avec un lien dans init.d et on met à jour les rc.d :
vim xvfb-init.d.sh chmod +x xvfb-init.d.sh cd /etc/init.d/ ln -s /opt/selenium/xvfb-init.d.sh xvfb update-rc.d xvfb defaults
Installer le daemon Selenium
Pour le script d’init.d, j’ai repris le script de robinhoode et je l’ai modifié.
On le met dans /opt/selenium/selenium-init.d.sh avec un lien dans init et update des rc :
vim selenium-init.d.sh chmod +x selenium-init.d.sh cd /etc/init.d/ ln -s /opt/selenium/selenium-init.d.sh selenium update-rc.d selenium defaults
Le script est à modifier selon la version du JAR_FILE.
#!/bin/bash ### BEGIN INIT INFO # Provides: selenium # Required-Start: $remote_fs $syslog $xvfb # Required-Stop: $remote_fs $syslog $xvfb # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Selenium server ### END INIT INFO # TODO: http://wiki.debian.org/LSBInitScripts DESC="Selenium server" RUN_AS=root JAVA_BIN=/usr/bin/java SELENIUM_DIR=/opt/selenium/ PID_FILE="$SELENIUM_DIR/selenium.pid" JAR_FILE="$SELENIUM_DIR/selenium-server-standalone-2.42.2.jar" LOG_FILE="$SELENIUM_DIR/selenium.log" MAX_MEMORY="-Xmx500m" STACK_SIZE="-Xss1024k" DAEMON_OPTS=" -client $MAX_MEMORY $STACK_SIZE -jar $JAR_FILE -log $LOG_FILE" NAME=selenium # TODO: Put together /etc/init.d/xvfb export DISPLAY=:99.0 case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $JAVA_BIN -- $DAEMON_OPTS echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --pidfile $PID_FILE echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --pidfile $PID_FILE sleep 1 start-stop-daemon -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $JAVA_BIN -- $DAEMON_OPTS echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac
On démarre les 2 services. On peut voir que le serveur écoute bien sur le port 4444.
Test de selenium
On va le faire via un client python : https://pypi.org/project/selenium/
Les autres clients sont disponibles sur : https://www.selenium.dev/downloads/
Les prérequis :
apt-get install python-setuptools
Installation des libraires python de Selenium :
wget https://pypi.python.org/packages/source/s/selenium/selenium-2.42.1.tar.gz tar -xzf selenium-2.42.1.tar.gz cd selenium-2.42.1 python setup.py install
On test un script :
# python /opt/selenium/scripts-test/test.py . ---------------------------------------------------------------------- Ran 1 test in 6.597s OK
Laisser un commentaire