Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente | |||
| technique:python:selenium [2021/07/15 23:34] – francoisa | technique:python:selenium [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Selenium ====== | + | **Cette page est obsolète. Veuillez accéder au contenu à son nouvel emplacement : [[https://bibliotech.cemea.org/books/outils-technique/page/ |
| - | + | ||
| - | pour tests d' | + | |
| - | + | ||
| - | Ressources : | + | |
| - | + | ||
| - | | + | |
| - | * [[https://www.ionos.fr/digitalguide/sites-internet/developpement-web/tutoriel-selenium-webdriver/|https:// | + | |
| - | | + | |
| - | + | ||
| - | Pré-recquis | + | |
| - | + | ||
| - | - un navigateur compatible : Firefox, Chrome, Chromium, IE | + | |
| - | - une API Webdriver (binaire) pour le navigateur : | + | |
| - | - Chromium : [[https:// | + | |
| - | - Firefox : [[https:// | + | |
| - | - la lib pyhon selenium (via pip ou virtualenv) | + | |
| - | - Un script (python) qui appelle la lib et le binaire | + | |
| - | + | ||
| - | Placer le binaire dans le path ou spécifier le chemin dans le script | + | |
| - | + | ||
| - | Exemple : | + | |
| - | + | ||
| - | <code python> | + | |
| - | import time | + | |
| - | + | ||
| - | from selenium import webdriver | + | |
| - | from selenium.webdriver.chrome.service import Service | + | |
| - | + | ||
| - | service = Service('/ | + | |
| - | service.start() | + | |
| - | driver = webdriver.Remote(service.service_url) | + | |
| - | driver.get(' | + | |
| - | time.sleep(5) # Let the user actually see something! | + | |
| - | driver.quit() | + | |
| - | + | ||
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Autre exemple : | + | |
| - | + | ||
| - | <code python> | + | |
| - | # | + | |
| - | + | ||
| - | from selenium import webdriver | + | |
| - | from selenium.webdriver.support.ui import WebDriverWait, | + | |
| - | from selenium.webdriver.support import expected_conditions as EC | + | |
| - | from selenium.webdriver.common.by import By | + | |
| - | from selenium.common.exceptions import TimeoutException | + | |
| - | import os, time | + | |
| - | + | ||
| - | download_dir = os.environ[' | + | |
| - | + | ||
| - | def wait_for_id(driver, | + | |
| - | try: | + | |
| - | r = WebDriverWait(driver, | + | |
| - | except TimeoutException: | + | |
| - | print(" | + | |
| - | exit | + | |
| - | + | ||
| - | return r | + | |
| - | + | ||
| - | profile = webdriver.FirefoxProfile() | + | |
| - | profile.set_preference(' | + | |
| - | profile.set_preference(' | + | |
| - | profile.set_preference(' | + | |
| - | profile.set_preference(' | + | |
| - | profile.set_preference(' | + | |
| - | profile.set_preference(' | + | |
| - | driver = webdriver.Firefox(profile) | + | |
| - | driver.get(" | + | |
| - | + | ||
| - | driver.find_element_by_id(" | + | |
| - | driver.find_element_by_id(" | + | |
| - | driver.find_element_by_id(" | + | |
| - | home_page = wait_for_id(driver, | + | |
| - | + | ||
| - | stats_link = home_page.find_element_by_css_selector("# | + | |
| - | candidates_link = wait_for_id(driver, | + | |
| - | driver.find_element_by_id(" | + | |
| - | format_link = wait_for_id(driver, | + | |
| - | + | ||
| - | format_selector = Select(driver.find_element_by_id(" | + | |
| - | format_selector.select_by_value(" | + | |
| - | driver.find_element_by_id(" | + | |
| - | + | ||
| - | before = dict([(f, None) for f in os.listdir(download_dir)]) | + | |
| - | while 1: | + | |
| - | time.sleep(10) | + | |
| - | after = dict([(f, None) for f in os.listdir(download_dir)]) | + | |
| - | added = [f for f in after if not f in before] | + | |
| - | if " | + | |
| - | break | + | |
| - | before = after | + | |
| - | + | ||
| - | driver.quit() | + | |
| - | + | ||
| - | + | ||
| - | </ | + | |
| - | + | ||