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
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:python:selenium [2021/07/15 18:29] francoisatechnique:python:selenium [2021/07/15 23:34] francoisa
Ligne 2: Ligne 2:
  
 pour tests d'interface web : [[https://www.selenium.dev/downloads/|https://www.selenium.dev/downloads/]] 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 Pré-recquis
  
   - un navigateur compatible : Firefox, Chrome, Chromium, IE   - un navigateur compatible : Firefox, Chrome, Chromium, IE
-  - un binaire pour le nvigateur :+  - une API Webdriver (binairepour le navigateur :
       - Chromium : [[https://chromedriver.chromium.org/|https://chromedriver.chromium.org/]]       - Chromium : [[https://chromedriver.chromium.org/|https://chromedriver.chromium.org/]]
       - Firefox : [[https://github.com/mozilla/geckodriver/|https://github.com/mozilla/geckodriver/]]       - Firefox : [[https://github.com/mozilla/geckodriver/|https://github.com/mozilla/geckodriver/]]
-  - installer la lib pyhon selenium (via pip ou virtualenv) +  - la lib pyhon selenium (via pip ou virtualenv) 
-  - Un script (python) qui appelle le binaire+  - Un script (python) qui appelle la lib et le binaire
  
 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('http://www.google.com/'); driver.get('http://www.google.com/');
 time.sleep(5) # Let the user actually see something! 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() driver.quit()
  
  • technique/python/selenium.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1