technique:python:selenium

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
technique:python:selenium [2021/07/15 23:34] francoisatechnique:python:selenium [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Selenium ====== +**Cette page est obsolèteVeuillez accéder au contenu à son nouvel emplacement : [[https://bibliotech.cemea.org/books/outils-technique/page/selenium|selenium]]**
- +
-pour tests d'interface web : [[https://www.selenium.dev/downloads/|https://www.selenium.dev/downloads/]] +
- +
-Ressources : +
- +
-  [[https://ichi.pro/fr/une-procedure-pas-a-pas-detaillee-de-web-scraping-a-l-aide-de-python-et-selenium-21381292843933|https://ichi.pro/fr/une-procedure-pas-a-pas-detaillee-de-web-scraping-a-l-aide-de-python-et-selenium-21381292843933]] +
-  * [[https://www.ionos.fr/digitalguide/sites-internet/developpement-web/tutoriel-selenium-webdriver/|https://www.ionos.fr/digitalguide/sites-internet/developpement-web/tutoriel-selenium-webdriver/]] +
-  [[https://www.selenium.dev/documentation/fr/getting_started/|https://www.selenium.dev/documentation/fr/getting_started/]] +
- +
-Pré-recquis +
- +
-  - un navigateur compatible : Firefox, Chrome, Chromium, IE +
-  - une API Webdriver (binaire) pour le navigateur : +
-      - Chromium : [[https://chromedriver.chromium.org/|https://chromedriver.chromium.org/]] +
-      - Firefox : [[https://github.com/mozilla/geckodriver/|https://github.com/mozilla/geckodriver/]] +
-  - 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('/path/to/chromedriver'+
-service.start() +
-driver = webdriver.Remote(service.service_url) +
-driver.get('http://www.google.com/'); +
-time.sleep(5) # Let the user actually see something! +
-driver.quit() +
- +
- +
-</code> +
- +
-Autre exemple : +
- +
-<code python> +
-#!/usr/bin/env python3 +
- +
-from selenium import webdriver +
-from selenium.webdriver.support.ui import WebDriverWait, Select +
-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['HOME'+
- +
-def wait_for_id(driver, id): +
-    try: +
-        r = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, id))) +
-    except TimeoutException: +
-        print("timed out !") +
-        exit +
- +
-    return r +
- +
-profile = webdriver.FirefoxProfile() +
-profile.set_preference('browser.download.folderList', 2) +
-profile.set_preference('browser.download.manager.showWhenStarting', False) +
-profile.set_preference('browser.download.dir', download_dir) +
-profile.set_preference('browser.helperApps.alwaysAsk.force', False) +
-profile.set_preference('browser.helperApps.neverAsk.openFile', 'text/csv'+
-profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv'+
-driver = webdriver.Firefox(profile) +
-driver.get("https://mon-url.com"+
- +
-driver.find_element_by_id("ctl00_mainContent_Login1_UserName").send_keys("monlogin"+
-driver.find_element_by_id("ctl00_mainContent_Login1_Password").send_keys("monmotdepasse"+
-driver.find_element_by_id("ctl00_mainContent_Login1_LoginButton").click() +
-home_page = wait_for_id(driver, "ctl00_ctl00_menubarPlaceHolder_ASPxMenu1"+
- +
-stats_link = home_page.find_element_by_css_selector("#ctl00_ctl00_menubarPlaceHolder_ASPxMenu1_DXI5_T a").click() +
-candidates_link = wait_for_id(driver, "ctl00_ctl00_mainContent_mainContent_WucCatalogueReporting1_TvMenut2"+
-driver.find_element_by_id("ctl00_ctl00_mainContent_mainContent_WucCatalogueReporting1_TvMenut2").click() +
-format_link = wait_for_id(driver, "ctl00_ctl00_mainContent_mainContent_WucCatalogueReporting1_RvMain_ctl01_ctl05_ctl00").click() +
- +
-format_selector = Select(driver.find_element_by_id("ctl00_ctl00_mainContent_mainContent_WucCatalogueReporting1_RvMain_ctl01_ctl05_ctl00")) +
-format_selector.select_by_value("CSV"+
-driver.find_element_by_id("ctl00_ctl00_mainContent_mainContent_WucCatalogueReporting1_RvMain_ctl01_ctl05_ctl01").click() +
- +
-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 "OfCandidat.csv" in added: +
-      break +
-  before = after +
- +
-driver.quit() +
- +
- +
-</code> +
- +
  • technique/python/selenium.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1