Download

Gestion des heures de colles

Nicolas Mesnier

Mis à jour le 03/04/2024.

colles.py est un script écrit en python 3 qui permet d’obtenir les décomptes d’heures de colles effectuées afin de les mettre en paiement par saisie sur l’application ASIE à partir de leurs déclarations par les enseignants et colleurs sur plusieurs instances de Cahier de Prépa. C’est un logiciel libre, distribué sous licence GPL v3.

Introduction

colles.py est un script écrit en python 3 qui génère une interface graphique permettant de relever les notes de colles (khôlles ou interrogations orales) sur plusieurs instances de cahier de prépa, chacun correspondant à une classe, et qui produit les déclarations à saisir sur l’application ASIE (Aide à la saisie des indemnités en établissement) par l’établissement.

L’idée du script colles.py est d’émuler le comportement d’un gestionnaire :

Ainsi, colles.py permet de :

colles.py s’appuie sur :

C’est un logiciel libre, distribué sous licence GPL v3.

Téléchargement

La dernière version est la 0.0.7 (03/04/2024).

Type Fichier
code python colles.py
modèle de saisie saisieASIE.ots
modèle de synthèse synthese.ots
documentation colles.pdf

Installation

Introduction

Pour utiliser colles.py, il est nécessaire d’avoir sur son ordinateur personnel :

Navigateur URL où trouver le pilote
Chrome https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox https://github.com/mozilla/geckodriver/releases
Safari https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Je vous recommande l’utilisation de firefox et de son pilote geckodriver qui sont des logiciels libres performants et dont l’utilisation par colles.py est la seule qui soit documentée. En fonction de la version de selenium disponible dans vos dépots, prenez les versions du pilote geckodriver et de firefox adaptées.

geckodriver firefox selenium
v0.33.0 >= 113 >= 3.14
v0.31.0 >= 91 >= 3.14
v0.30.0 78<=90 3.14<=4.0
v0.29.0 60<=90 3.14<=4.0
v0.25.0 57<=90 3.14<=4.0
v0.20.1 55<=62 >= 3.5

Voir ici pour la liste complète.

Il n’est pas nécessaire d’avoir d’environnement de développement, mais vous pouvez librement utiliser pyzo si vous voulez (voir ici pour l’installation).

MS Windows 7/8/10/11

Pour utiliser colles.py avec pyzo et Miniconda avec MS Windows, il faut :

  1. télécharger et installer libreoffice ;

  2. télécharger et installer firefox ;

  3. télécharger et installer pyzo :

    https://github.com/pyzo/pyzo/releases
    https://github.com/pyzo/pyzo/releases/download/v4.13.3/pyzo-4.13.3-win64.exe

    pour windows 7, préférez la version 4.9.0 :

    https://github.com/pyzo/pyzo/releases/download/v4.9.0/pyzo-4.9.0-win64-windows7.exe

  4. télécharger et installer Miniconda 3 :

    https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe

  5. ouvrir pyzo en mode administrateur (clic-droit> exécuter en tant qu’administrateur) ;

  6. choisir miniconda comme distribution python (cliquer sur use this env...) ;

  7. installer la bibliothèque selenium en tapant dans le shell python :

    conda install selenium

    répondre oui (y) pour confirmer l’installation des dépendances ;

  8. installer la bibliothèque tkinter en tapant dans le shell python :

    conda install tkinter

    ou, pour les versions les plus récentes :

    conda install -c anaconda tk

    répondre oui (y) pour confirmer l’installation des dépendances ;

  9. fermer pyzo et le relancer en mode « normal » ;

  10. télécharger le driver gecko sur github :

    https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-win64.zip

  11. décompresser l’archive et mettre le fichier geckodriver.exe dans un répertoire, par exemple driver ;

  12. ouvrir le fichier colles.py et éditer la ligne :

    plugin="C:\\le\\long\\chemin\\de\\geckodriver.exe"

    qui permet de renseigner la localisation du driver gecko ;

  13. toujours dans le fichier colles.py, vérifier et si besoin éditer ou décommenter les lignes :

    exe_navigateur='C:\\Program Files\\Mozilla Firefox\\firefox.exe'
    exe_libreoffice = 'C:\\Program Files\\LibreOffice\program\\soffice.exe'

    qui permet de renseigner la localisation des éxécutables de firefox et de libreoffice, ici donnés dans le cas d’une installation par défaut sur une machine 64 bits (en "C:\\Program Files (x86)\\... pour une machine 32 bits).

Mac OS X

Pour utiliser colles.py avec pyzo et Anaconda avec Mac OS X, il faut :

  1. télécharger et installer libreoffice ;

  2. télécharger et installer firefox ;

  3. télécharger et installer pyzo :

    https://github.com/pyzo/pyzo/releases
    https://github.com/pyzo/pyzo/releases/download/v4.13.3/pyzo-4.13.3-macos_x86_64.dmg

  4. télécharger et installer Anaconda :

    https://repo.anaconda.com/archive/Anaconda3-2023.07-2-MacOSX-x86_64.pkg

  5. ouvrir pyzo et choisir anaconda comme distribution python (cliquer sur use this env...) ;

  6. installer la bibliothèque selenium en tapant dans le shell python :

    conda install selenium

    répondre oui (y) pour confirmer l’installation des dépendances ;

  7. fermer pyzo ;

  8. télécharger le driver gecko sur github:

    https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-macos.tar.gz

  9. décompresser l’archive et mettre le fichier geckodriver dans un répertoire, par exemple driver ;

  10. ouvrir le fichier colles.py et éditer la ligne :

    plugin="/usr/$(whoami)/chemin/de/geckodriver"

    qui permet de renseigner la localisation du driver gecko ;

  11. toujours dans le fichier colles.py, vérifier et si besoin éditer ou décommenter les lignes :

    exe_navigateur= '/Applications/Firefox.app/Contents/MacOS/firefox'
    exe_libreoffice = '/Applications/LibreOffice.app/Contents/MacOS/soffice'

    qui permet de renseigner la localisation des éxécutables de firefox et de libreoffice, ici donnés dans le cas d’une installation par défaut.

Attention Un bug graphique empêche l’exécution des objets tkinter avec pyzo alors qu’ils fonctionnent très bien depuis un terminal. Pour contourner ce problème sans avoir à lancer de terminal, il est possible de créer un lanceur. Pour ce faire :

  1. lancer une recherche de l’éditeur AppleScript en cliquant sur la loupe en haut à droite ;

  2. éditer le code suivant :

    tell application "Terminal"
        activate
        do script "python3 /usr/$(whoami)/chemin/de/colles.py"
    end tell

    en modifiant l’emplacement de votre dossier colles dans lequel figure le script colles.py ;

  3. vérifier le bon fonctionnement en cliquant sur Éxécuter puis sauvegarder votre script comme une application à partir de l’AppleScript :

    1. cliquer sur Fichier--Exporter ;
    2. dans Format de fichier, sélectionner Application et laisser tout le reste décoché ;
    3. cliquer sur Enregistrer.

Le lanceur (raccourci) est alors créé est permet de lancer le script colles.py en double-cliquant dessus.

GNU/Linux (Debian et filles rebelles)

Pour utiliser colles.py avec une distribution GNU/Linux de base Debian (Ubuntu, Mint, etc), incluant python3, il faut :

  1. Installer libreoffice, firefox et les bibliothèques tkinter et selenium en tapant dans un terminal :

     $ sudo apt install libreoffice firefox-esr python3-tk python3-selenium

    avec votre gestionnaire de paquets préféré ;

  2. télécharger le driver gecko sur github :

    https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-linux64.tar.gz

  3. décompresser l’archive et mettre le fichier geckodriver dans un répertoire, par exemple driver ;

  4. ouvrir le fichier colles.py et éditer la ligne :

    plugin="/usr/$(whoami)/chemin/de/geckodriver"

    qui permet de renseigner la localisation du driver gecko ;

  5. toujours dans le fichier colles.py, vérifier et si besoin éditer la ligne :

    exe_navigateur="/usr/bin/firefox"

    qui permet de renseigner la localisation de l’éxécutable du navigateur (ici firefox, avec une installation par défaut) ;

  6. jouer du chmod +x pour le rendre exécutable et se faire un lien symbolique vers /home/$(whoami)/bin avec ln -s.

Configuration des cahiers de prépa

Selon l’annexe VII de l’arrêté du 10 février 1995 fixant l’organisation générale des études et les horaires des CPGE, chaque élève de CPGE bénéficie de 40 minutes de colles par semaine, auxquelles s’ajoutent sur l’année :

Selon l’article 17, les interrogations orales sont réalisées :

Compte lycée

Sur le Cahier de Prépa de chacune des classes, rendez-vous dans la rubrique « Gestion des utilisateurs », sélectionner « Les comptes », puis :

  1. créer un compte type « Lycée » ;

  2. lui associer toutes les matières en sélectionnant le premier carré du pop-up ;

  3. selectionner une « Saisie du mot de passe » ;

  4. renseigner la zone de texte avec :

     nom,prenom,mot-de-passe
  5. valider !

Les identifiants de connexion seront alors :

login="pnom"
password="mot-de-passe"

Matière scientifique, LV1

Pour chaque matière scientifique ou la langue vivante 1 (LV1) pour laquelle il y a des colles :

  1. activer les notes de colles ;
  2. fixer la durée des colles à 20 minutes ;
  3. rendre chaque heure insécable, conformément à la jurisprudence (à consulter par exemple sur le site de l’APHEC) ;
  4. valider les modifications.

Par exemple, pour les mathématiques :

Lettres

Pour le cas des lettres, les colles se font à l’élève et selon un rythme différent. On paramétrera donc la matière avec :

  1. activer les notes de colles ;
  2. fixer la durée des colles à 30 minutes ;
  3. fixer le décompte à l’élève ;
  4. valider les modifications.

Matière sans colle

Certaines matières ne comportent pas de colle, comme l’informatique commune ou les TIPE. Dans ce cas, on prendra soin de désactiver la fonction pour éviter toute mauvaise saisie :

  1. désactiver les notes de colles ;
  2. valider les modifications.

Configuration de colles.py

Le navigateur internet et l’éxécutable libreoffice ont normalement été configurés en renseignant les variables globales :

exe_navigateur

exécutable du navigateur firefox (chemin absolu) ;

plugin

exécutable du pilote gecko (chemin absolu) ;

exe_libreoffice

exécutable de libreoffice (chemin absolu) ;

lors de l’installation.

Répertoire de téléchargement

Afin d’isoler et centraliser tous les fichiers téléchargés des différents Cahier de Prépa, on définit un répertoire de téléchargement spécifique à la gestion des colles, différent du répertoire par défaut. Pour ce faire, il faut renseigner la variable globale :

downloads

répertoire de téléchargement des fichiers des différents Cahier de Prépa (chemin absolu).

Si le répertoire n’existe pas, il sera créé.

Modèles de feuilles de calcul

Télécharger et copier dans le répertoire downloads les modèles de feuilles de calcul pour :

En cas d’oubli, ces fichiers seront téléchargés dès la première synthèse réalisée.

Les noms des deux fichiers de modèle de feuille de calcul sont définis dans le dictionnaire modeles sous la forme :

modeles = {
    "saisie": "saisieASIE.ots",
    "synthese": "synthese.ots"
}

Éditer le fichier synthese.ots pour ajuster le nombre de colonnes correspondant au nombre de classes (fixé à 5 sur le fichier téléchargé), par simple clic droit sur une colonne classe, ajouter une colonne à droite ou à gauche.

Notez que, par défaut, un double-clic génère un nouveau document avec ce modèle qu’il vous faudra ensuite enregister comme modèle (extension .ots) une fois les modifications faites. Le plus simple est certainement de lancer l’interface graphique depuis un terminal (shell UNIX) :

$ libreoffice -o synthese.ots

où l’option -o permet d’ouvrir le fichier modèle pour édition.

Classes

Pour définir les classes et leurs Cahier de Prépa respectifs, on renseigne un dictionnaire classes où chaque clé est le nom de la classe, par exemple PCSI, et où chaque valeur est un dictionnaire de la forme :

{
    "annee" : <int>,     # 1 ou 2
    "effectif" : <int>,  # nombre d'élèves
    "short" : <text>     # suffixe de l'URL de https://cahier-de-prepa.fr/
    "login" : <text>     # identifiant de connexion de type lycée
    "password" : <text>  # mot de passe correspondant
}

Par exemple au lycée Jean Perrin de Lyon, on a :

classes = {
    "MPSI" : {"annee" : 1, "effectif" : 46, "short" : "mpsi-perrin"},
    "PCSI" : {"annee" : 1, "effectif" : 40, "short" : "pcsi-perrin"},
    "MP" :   {"annee" : 2, "effectif" : 21, "short" : "mp-perrin" },
    "PC" :   {"annee" : 2, "effectif" : 23, "short" : "pc-perrin"},
    "PSI" :  {"annee" : 2, "effectif" : 36, "short" : "psi-perrin"}
}

Indépendamment du fait que ce soit regrettable, il est tout à fait possible qu’une classe n’ait pas de cahier de prépa, mais qu’un autre cahier y face appel (par exemple celui d’une matière, comme décrit dans la section cahiers). Auquel cas, il suffit de ne pas renseigner son URL abrégée "short". La définition de la classe ne sera alors utile que pour déterminer le code taux DCP.

Si le cahier de prépa n’est pas hébergé « avec les autres » (par exemple s’il est auto-hébergé), il est aussi possible de définir son URL complète avec la clé "URL" sous la forme :

classes = {
    "classe" : {
        "annee" : <int>, 
        "effectif" : <int>, 
        "URL" : "https://une-autre-URL-de-cahier-de-prepa.fr/classe"
        },
    ...
}

ORS et codes taux DCP

Les clés annee et effectif permettent de compléter le code ASIE nécessaire à la détermination du code correspondant au taux DCP :

Année Effectif Chaire sup’ Autres
1 <20<20 091 008
1 20 à 35 090 007
1 >35>35 001 006
2 <20<20 090 007
2 20 à 35 001 006
2 >35>35 157 161

Le choix a été fait de ne pas faire de distinction entre les professeurs de chaire supérieure et les autres, bien que leurs taux soient différents et de ne garder comme indication pour la saisie ASIE :

Année Effectif Code taux DCP
1 <20<20 "HI 1ÈRE ANNÉE CPGE (MOINS DE 20 ÉLÈVES)"
1 20 à 35 "HI 1ÈRE ANNÉE CPGE (20 À 35 ÉLÈVES)"
1 >35>35 "HI 1ÈRE ANNÉE CPGE (PLUS DE 35 ÉLÈVES)"
2 <20<20 "HI 2ÈME ANNÉE CPGE (MOINS DE 20 ÉLÈVES)"
2 20 à 35 "HI 2ÈME ANNÉE CPGE (PLUS DE 35 ÉLÈVES)"
2 >35>35 "HI 2ÈME ANNÉE CPGE (20 À 35 ÉLÈVES)"

Cahiers

Il est possible de détourner la vue d’un cahier de prépa pour centraliser une matière, auquel cas chaque « matière » du cahier devrait correspondre à une classe. Dans ce cas, il faut renseigner un dictionnaire cahiers sous la forme :

cahiers = {
    "nom" : {
        "matière" : "<nom de la matière>", 
        "short" : "<URL abrégée>"
    },
    ...
}

par exemple pour l’anglais au lycée Jean Perrin :

cahiers = {
    "anglais" : { "matière" : "anglais", "short" : "anglais-perrin"}
}

La clé "matière" est indispensable et permet de déclencher l’interversion entre classe et matière pour établir le décompte des heures de colles.

Dans tous les cas, c’est le dictionnaire global cahiers qui sera seul utilisé. Pour ce faire, le code le complète automatiquement avec toutes les entrées du dictionnaire classes et

Identifiants de connexion

Identifiants uniques pour tous les cahiers

Afin de simplifier la gestion des identifiants de connexion aux différents Cahier de Prépa, le plus simple est certainement d’utiliser le même jeu d’identifiants pour tous les cahiers. Dans ce cas, on renseignera les variables globales :

login

identifiant du compte lycée ;

password

mot de passe.

Ces identifiants seront considérés comme identifiants par défaut s’ils sont non précisés lors de la définition d’une classe de classes ou d’un cahier de cahiers.

Identifiant par cahier

Pour définir des identifiants propres à un cahier, il suffit de préciser les clés "login" et "password", sous la forme :

classes = {
    "classe" : {
        "annee" : <int>, 
        "effectif" : <int>, 
        "short" : "<URL abrégée>",
        "login" : "<identifiant>", 
        "password" : "<mot de passe>"
        },
    ...
}

ou, de façon équivalente pour un cahier :

cahiers = {
    "nom" : {
        "matière" : "<nom de la matière>", 
        "short" : "<URL abrégée>",
        "login" : "<identifiant>", 
        "password" : "<mot de passe>"
        },
    ...
}

Sécurité

Il est évidemment possible de lire les identifiants de connexion à dans un fichier chiffré, par exemple avec GnuPG :

from subprocess import check_output
password = check_output("gpg -dq chemin/identifiants.gpg", shell=True
    ).decode('UTF-8').splitlines()[0]

ou alors avec pass (qui utilise GnuPG) :

from subprocess import check_output
password = check_output("pass identifiants", shell=True
    ).decode('UTF-8').splitlines()[0]

Colleurs

Afin de faciliter la saisie ASIE et éviter tout problème avec d’éventuels homonymes, on renseignera un fichier CSV de colleurs sous la forme :

alias ; Nom ; Prénom ; prof CPGE

où :

alias
est le nom du colleur pour cahier de prépa. Le plus souvent la première initiale du prénom, puis le nom ;
Nom et Prénom
le nom et le prénom du colleur tel que connu par l’administration et donc l’application ASIE ;
prof CPGE
précise avec x ou X si le colleur est enseignant en CPGE (vide sinon).

Pour définir ce fichier, on le placera dans le répertoire downloads et on précisera son nom avec la variable globale fichier_colleurs ; par exemple :

fichier_colleurs = "colleurs.csv"

dont le contenu pourrait être :

alias;Nom;Prénom;prof CPGE
A. CDAIRE;Alphabet;CDAIRE;x
R. EAU;Robert;EAU;x
O. TARCIE;Octave;TARCIE;
...

Statut des colleurs

Comme le code des indemnités pour la saisie ASIE dépend du statut du colleur :

Statut Code indemnités
Enseignant CPGE 0207
Autre 2249

Comme le code indemnités est le premier champ de sélection pour la saisie ASIE, le fichier d’aide à la saisie sera trié avec ce code comme clé primaire.

Nom des colleurs

Il se peut que des colleurs collant dans plusieurs classes n’aient pas les mêmes noms sur tous les cahiers de prépa. Auquel cas, on peut renseigner un dictionnaire :

renommer = {
    "nom1 à changer": "nom1 correct",
    "nom2 à changer": "nom2 correct"
}

pour que leurs noms dans les fichiers de synthèses soient conformes.

Exemple de configuration complète

La configuration minimale de colles.py sur GNU/Linux, doit être de la forme :

login="pnom"
password="mot-de-passe"

classes = {
    "MPSI" : {"annee" : 1, "effectif" : 46, "short" : "mpsi-perrin"},
    "PCSI" : {"annee" : 1, "effectif" : 40, "short" : "pcsi-perrin"},
    "MP" :   {"annee" : 2, "effectif" : 21, "short" : "mp-perrin"},
    "PC" :   {"annee" : 2, "effectif" : 23, "short" : "pc-perrin"},
    "PSI" :  {"annee" : 2, "effectif" : 36, "short" : "psi-perrin"}
}

downloads = "/home/.../gestion_colles/colles_2023-2024"
modeles = {
    "saisie": "saisieASIE.ots",
    "synthese": "synthese.ots"
}
fichier_colleurs = "colleurs.csv"

renommer = {
    "nom1 à changer": "nom1 correct",
    "nom2 à changer": "nom2 correct"
}

exe_navigateur='/usr/bin/firefox'
plugin='/home/.../gestion_colles/geckodriver'
exe_libreoffice = '/usr/lib/libreoffice/program/soffice'

Utilisation

Exécuter le script colles.py qui ouvre alors une interface graphique de la forme :

et une fenêtre du navigateur firefox.

L’interface graphique est structurée en 4 blocs :

  1. un bloc de connexions aux différents Cahier de Prépa. En cliquant sur le nom d’un cahier, on s’y connecte automatiquement, dans l’interface de « Relève des colles ». Une fois les opérations réalisées manuellement, on se déconnecte en cliquant sur « Se déconnecter » ;

  2. un bloc permettant de réaliser les relevés des colles. Après avoir fixé la date de fin, c’est-à-dire la date jusqu’à laquelle on souhaite relever les notes (non encore relevées), on peut :

    • soit relever les notes cahier par cahier en cliquant sur leurs noms respectifs ;
    • soit relever les notes pour tous les cahiers en cliquant sur « Tous les cahiers ».

    Dans les deux cas, la connexion au Cahier de Prépa, la création du relevé, son téléchargement avec le nom du cachier et la déconnexion sont automatiques.

    Afin de simplifier l’utilisation, la date de fin est par défaut initialisée au dernier jour du mois précédent.

  3. Un bloc permettant de télécharger puis réaliser les fichiers de synthèse. Après avoir modifié la date des relevés, par défaut fixée à celle du jour, un clic sur le bouton « Télécharger les fichiers » permet de télécharger tous les fichiers de cahiers de prépa afin de faire la synthèse.

    Ensuite, un clic sur le bouton « Fichiers de synthèse » permet de générer, à partir des fichiers téléchargés, deux fichiers CSV :

    • de synthèse regroupant toutes les classes et tous les colleurs et trié par Nom de la forme :

       Mois ; Colleur ; Classe ; Nombre d'heures/classe

      et avec pour nom "synthèse-colles_AAAA-MM-JJ.csv" ;

    • un fichier d’aide à la saisie ASIE regroupant tous les colleurs, mais trié par code indemnités, puis Nom, de la forme :

       Mois ; Prof CPGE ; Code indemnités ; Colleur ; 
           Code taux DCP ; Nombre d'heures

      et avec pour nom "saisie-colles_AAAA-MM-JJ.csv" ;

    et deux fichiers de tableur au format ODS (libreoffice calc) correspondant et avec pour noms respectifs "synthèse-colles_AAAA-MM-JJ.ods" et "saisie-colles_AAAA-MM-JJ.ods".

  4. Un bloc de déconnexion qui permet de quitter l’application avec le bouton Quitter.

Si votre interface est incomplète, c’est probablement que la hauteur spécifiée avec la ligne :

master.wm_geometry("320x800")

est insuffisante. Dans ce cas, il faut adapter le 800 à vos besoins.

Relevé des colles

Pour réaliser un relevé des (notes de) colles, il faut :

  1. cliquer sur « Tous les cahiers » dans la section « Relever les colles des cahiers » ou, en cas de problème, cliquer sur le nom de chaque cahier ;

  2. cliquer sur « Télécharger les fichiers » dans la section « Synthèse des colles » ;

  3. cliquer sur « Fichiers de synthèse »  dans la section « Synthèse des colles »

Avec cahier de prépa, dès qu’une colle est relevée, elle est marquée avec la date du relevé. Une colle ne peut pas être relevée deux fois. Ainsi, seules les colles déclarées avant la date de relevé choisie et non encore relevées sont prises en compte dans un nouveau relevé.

Comme les saisies ASIE doivent préciser le mois d’exercice, on propose de procéder aux ramassages des heures de colles d’un mois donné le 10 du mois suivant. Les colles déclarées en retard seront affectées au ramassage suivant.

Si un élève est absent à une colle, il faut le noter ABS sur cahier de prépa. Cette note sera corrigée ultérieurement une fois le rattrapage effectué.

Ré-édition

Dans le cas où les fichiers téléchargés auraient été supprimés, il est possible de les télécharger de nouveau. Pour cela, dans la section « Synthèse des colles » :

  1. fixer la date du relevé pour lequel télécharger les fichiers ;
  2. cliquer sur « Télécharger les fichiers ».

Correction manuelle

Dans le cas où vous auriez appliqué des corrections manuelles aux fichiers téléchargés, il est possible de générer de nouveau les fichiers de synthèse. Pour cela, dans la section « Synthèse des colles » :

  1. fixer la date du relevé et des fichiers téléchargés ;
  2. cliquer sur « Fichiers de synthèse ».

Ressources

Outil URL
pyzo http://www.pyzo.org/
selenium https://github.com/SeleniumHQ/selenium/
Mozilla firefox https://www.mozilla.org/fr/firefox/
Pilote Mozilla gecko https://github.com/mozilla/geckodriver/releases
pyzo http://www.pyzo.org/