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() | + | |
- | + | ||
- | + | ||
- | </ | + | |
- | + |