Ce projet implémente une API en Python pour automatiser les interactions avec les navigateurs web via Selenium. Il permet de lire un ensemble d'instructions à partir d'un fichier JSON et d'exécuter diverses actions telles que naviguer sur des pages web, cliquer sur des éléments, exécuter des scripts JavaScript, prendre des captures d'écran et installer des plugins.
- Prérequis
- Installation des Dépendances
- Execution
- Installation + Execution de l'API
- Format du fichier JSON
- Description
- Norme
python >= 3.12.1
Google Chrome >= 120.0.6099.234 Pip3 install -r requirements.txt Execution du programme sans argument(Le programme sera lancé par default avec introduction.json):
Python3 API.pyExecution du programme avec argument(file.json):
Python3 API.py /path/file.jsonVous pouvez installer et executer le projet directement avec le script :
1 - Le script installe un environnement virtual Python
2 - Installe les dépendances
3 - Lance l'API
Sans Argument : (Le programme est lancé avec le json inclue dans le dossier "intructions.json")
chmod +x start.sh
./start.shavec Argument : (Le programme est lancé avec le json de votre choix)
chmod +x start.sh
./start.sh /path/file.jsonVoici le Format du Json:
{
"actions": [
{
"type": "navigate",
"url": "https://example.com"
},
{
"type": "click",
"selector": "#buttonId" // css selector could be div.<class_name> -> div.login_link
},
{
"type": "execute_script",
"script": "return document.title;"
},
{
"type": "screenshot",
"filename": "screenshot.png"
},
{
"type": "install_plugin",
"plugin_name": "cookie_popup_blocker" // download in local and install it from selenium
}
]
}Voici quelques explications sur les fonctions Selenium utilisé dans mon API:
Installation de Plugin
La méthode install_plugin permet d'installer un plugin dans le navigateur. Information : Les plugin s'installe au demarrage du driver et ne peux etre installé en cours de route.
driver_options = Options()
driver_options.add_extension("plugin_name") # un plugin à pour extension .crx
driver = webdriver.Chrome(options=self.driver_options)La méthode navigate permet de naviguer vers une URL spécifiée.
driver.get("http://www.exemple.com")Exécution de Script
La méthode execute_script exécute un script JavaScript.
driver.execute_script("script JavaScript")Capture d'Écran
La méthode screenshot prend une capture d'écran de la page actuelle.
driver.save_screenshot("filename")Wait
La méthode wait est cruciale pour gérer les éléments dynamiques sur les pages web. En utilisant cette méthode, le script Selenium attend qu'un certain état soit atteint avant de continuer l'exécution. Cela améliore la stabilité du script en s'assurant que les éléments sont chargés et interactifs.
Il existe deux types de wait dans Selenium :
1 - Explicit Wait : Attend explicitement qu'une certaine condition soit remplie avant de continuer. Par exemple, attendre qu'un élément soit visible ou cliquable.
WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID,"monElement"))
)2 - Implicit Wait : Configure un délai d'attente global pour le WebDriver, qui sera appliqué à toutes les opérations.
driver.implicitly_wait(10)Ce projet respecte la norme PEP 8 Python.