Logo Selenium

Selenium sur Raspberry Pi 3

Raspberry
Selenium


Selenium est un framework servant à faire des tests unitaires pour des applications Web. J’ai besoin de faire ce genre de tests sur une carte de type ARM dans un environnement totalement propre, j’entends par la sans aucun perturbateurs. Pour cela, j’utilise une carte Raspberry Pi 3 qui sera reliée en direct à mon serveur. Ce serveur génère des pages HTTP et je vais donc le tester via le framework Selenium.

Pour commencer, il nous faut un navigateur et donc un serveur X. Nous utiliserons ici xvfb comme serveur X virtuel et Chromium comme navigateur. J’aurais préféré utiliser Firefox mais celui-ci est en version 52 sur Raspberry pi 3 et cette version pose quelques problèmes avec Selenium. Bien sur les tests seront lancer en Python et donc nous utiliserons les environnements virtuel python pour garder notre système propre.

# apt-get install xvfb chromium-browser python3-venv

Pour contrôler Chromium, il faut utiliser le driver, au sens Selenium, chromiumdriver qui n’est pas disponible sous Raspbian. Nous allons donc le récupérer dans les dépôts Debian.

$ wget http://security.debian.org/debian-security/pool/updates/main/c/chromium-browser/chromium-driver_63.0.3239.84-1~deb9u1_armhf.deb
$ dpkg -x chromium-driver_63.0.3239.84-1~deb9u1_armhf.deb /tmp/chromium-driver
# cp /tmp/chromium-driver/usr/bin/chromedriver /usr/bin/

Vu que nous n’utilisons pas le système de paquet pour installer chromedriver, il faut installer les dépendances de manière séparer.

# apt-get install  libminizip1 libwebpmux2 libgtk-3-0

Maintenant que tout est installé, nous allons tester que l’ensemble fonctionne bien.

$ pyvenv env
$ source env/bin/activate
$ pip install --upgrade pip
$ pip install selenium

Un petit script de test :

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("-headless")
options.add_argument("-disable-gpu")

chrome = webdriver.Chrome(chrome_options=options)
chrome.get("http://google.fr")

print("Titre de la page: {}".format(chrome.title))
chrome.save_screenshot('screenshot.png')

chrome.close()

Puis son execution :

$ python test.py
Titre de la page: Google

Vous devriez aussi avoir une copie d’écran de la page dans le fichier « screenshot.png ».

Voila vous avez maintenant une Raspberry Pi prête à exécuter des tests avec Selenium. Il ne reste plus qu’à utiliser votre Raspberry Pi depuis votre outils d’intégration continue préféré.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.