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 Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
technique:python:selenium [2021/07/15 18:29] – francoisa | technique:python:selenium [2021/07/15 23:34] – francoisa | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
pour tests d' | pour tests d' | ||
+ | |||
+ | Ressources : | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
Pré-recquis | Pré-recquis | ||
- un navigateur compatible : Firefox, Chrome, Chromium, IE | - un navigateur compatible : Firefox, Chrome, Chromium, IE | ||
- | - un binaire pour le nvigateur | + | - une API Webdriver (binaire) pour le navigateur |
- Chromium : [[https:// | - Chromium : [[https:// | ||
- Firefox : [[https:// | - Firefox : [[https:// | ||
- | - installer | + | - la lib pyhon selenium (via pip ou virtualenv) |
- | - Un script (python) qui appelle le binaire | + | - Un script (python) qui appelle |
Placer le binaire dans le path ou spécifier le chemin dans le script | Placer le binaire dans le path ou spécifier le chemin dans le script | ||
Ligne 27: | Ligne 33: | ||
driver.get(' | driver.get(' | ||
time.sleep(5) # Let the user actually see something! | 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() | driver.quit() | ||