technique:python:selenium

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:python:selenium [2021/07/15 18:19] – créée francoisatechnique:python:selenium [2021/07/15 23:34] francoisa
Ligne 1: Ligne 1:
 ====== Selenium ====== ====== Selenium ======
  
-pour tests d'interface web : 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/ +      - Chromium : [[https://chromedriver.chromium.org/|https://chromedriver.chromium.org/]] 
-      - Firefox : https://github.com/mozilla/geckodriver/ +      - Firefox : [[https://github.com/mozilla/geckodriver/|https://github.com/mozilla/geckodriver/]] 
-  - Un script (python) qui appelle le binaire+  - 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 Placer le binaire dans le path ou spécifier le chemin dans le script
Ligne 27: Ligne 34:
 time.sleep(5) # Let the user actually see something! time.sleep(5) # Let the user actually see something!
 driver.quit() 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> </code>
  
  
  • technique/python/selenium.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1