
Avec Docker, vous pouvez rapidement, facilement installer, configurer et utiliser Selenium Grid. Ce tutoriel montre les étapes respectives dont vous avez besoin en tant que testeur de logiciel (ou développeur). Au lieu de Python, vous pouvez également utiliser d’autres langages, qui sont pris en charge par Selenium.
Conditions préalables
- Python installer (min. 2.7)
- virtualenv installer (optionnel)
- docker-machine installer
- docker-compose installer
Préparation des fichiers
$ mkdir -p ~/Project/SeleniumTutorial && cd ~/Project/SeleniumTutorial # create docker-compose.yml (version 1) $ vim v1-docker-compose.yml # or create docker-compose.yml (version 2) $ vim v2-docker-compose.yml # create python example.py $ vim example.py
Docker-compose.yml file
version: '2' services: selenium_hub: image: selenium/hub ports: - 4444:4444 node_1: image: selenium/node-chrome depends_on: - selenium_hub environment: - HUB_PORT_4444_TCP_ADDR=selenium_hub node_2: image: selenium/node-firefox environment: - HUB_PORT_4444_TCP_ADDR=selenium_hub depends_on: - selenium_hub
example.py file
import os import datetime import time import unittest from selenium import webdriver class Example(unittest.TestCase): def setUp(self): self.driver = webdriver.Remote( command_executor='http://192.168.99.100:4444/wd/hub', desired_capabilities={ 'browserName': 'firefox', 'javascriptEnabled': True } ) self.driver.get('http://softwaretester.info/') def test_something(self): dt_format = '%Y%m%d_%H%M%S' cdt = datetime.datetime.fromtimestamp(time.time()).strftime(dt_format) current_location = os.getcwd() img_folder = current_location + '/images/' if not os.path.exists(img_folder): os.mkdir(img_folder) picture = img_folder + cdt + '.png' self.driver.save_screenshot(picture) def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main(verbosity=1)
Créer un environnement
# create new VM $ docker-machine create -d virtualbox Grid # pointing shell $ eval $(docker-machine env Grid) # show status (optional) $ docker-machine ls ... NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS Grid * virtualbox Running tcp://192.168.99.100:2376 v1.11.1 # run docker-compose $ docker-compose -f docker-compose.yml up -d # show status $ docker-compose -f docker-compose.yml ps ... Name Command State Ports ------------------------------------------------------------------------------------------ seleniumtutorial_node_1_1 /opt/bin/entry_point.sh Up seleniumtutorial_node_2_1 /opt/bin/entry_point.sh Up seleniumtutorial_selenium_hub_1 /opt/bin/entry_point.sh Up 0.0.0.0:4444->4444/tcp
Ouvrir le navigateur
Lancer le script Python
# run python selenium script $ python -B ~/Projects/Selenium/example.py
Remarque: via browserName (example.py), vous pouvez choisir le navigateur respectif (firefox ou chrome)!
Remarque: avec docker-compose, vous pouvez ajouter / supprimer des instances de nœuds!
# create 2 instances (Version: 1) $ docker-compose -f v1-docker-compose.yml scale node_1=2 # create 3 instances (Version: 2) $ docker-compose -f v2-docker-compose.yml scale node_2=3