CodeGym /Cours /Python SELF FR /Introduction à XPath et aux Sélecteurs CSS

Introduction à XPath et aux Sélecteurs CSS

Python SELF FR
Niveau 35 , Leçon 4
Disponible

1. Qu'est-ce que XPath et les sélecteurs CSS ?

Aujourd'hui, on va faire un énorme pas vers la maîtrise de l'automatisation web avec Selenium et découvrir XPath et les sélecteurs CSS. Ces petits outils mais puissants deviendront tes fidèles compagnons pour chercher des éléments sur les pages web. Plongeons ensemble dans le monde des sélecteurs et apprenons à les utiliser pour une recherche plus précise et efficace.

Si un document HTML était une forêt dense, alors XPath et les sélecteurs CSS seraient tes cartes de navigation. Ils te permettent de tracer un chemin vers le bon arbre (ou l'élément, si tu préfères la programmation). Ces outils aident à trouver les éléments sur les pages web, même s'ils se cachent derrière des mètres de code et des millions de balises.

XPath

XPath (XML Path Language) — c'est un langage conçu pour naviguer dans les documents XML. Mais quelqu'un a dit qu'HTML est un hybride XML, non ? Voilà pourquoi XPath est si pratique à utiliser avec les documents HTML. Il peut littéralement accéder à un élément selon n'importe quel chemin que tu définis.

Sélecteurs CSS

Les Sélecteurs CSS viennent du monde des feuilles de style en cascade. Pas de panique, leur apprentissage ne te demandera pas de devenir un designer ! Ils servent à sélectionner précisément des éléments selon leur type, classe, identifiant et même état. Les utiliser est plus simple qu'il n'y paraît — tu les as probablement déjà utilisés inconsciemment pour styliser des pages web.

2. Application d'XPath et des Sélecteurs CSS dans le code

Maintenant que tu sais ce que sont ces merveilles — les sélecteurs, passons direct à la pratique. On va découvrir comment les utiliser avec Selenium et accomplir des miracles !

Utilisation de XPath

Voici un exemple de comment utiliser XPath pour rechercher un élément dans Selenium :

Python

from selenium import webdriver

# Configuration du driver
driver = webdriver.Chrome()

# Ouverture de la page
driver.get('https://example.com')

# Recherche d'un élément via XPath
element = driver.find_element_by_xpath('//div[@id="menu"]/ul/li/a')

# Affichage du texte de l'élément
print(element.text)

# Fermeture du navigateur
driver.quit()

Explications :

  • //div[@id="menu"]/ul/li/a — c'est notre XPath. Il dit : "Hé driver, trouve moi l'élément a, qui est à l'intérieur de li, qui est dans ul, qui est dans div avec id="menu"."

Utilisation des Sélecteurs CSS

Maintenant voyons comment utiliser les sélecteurs CSS :

Python

from selenium import webdriver

# Configuration du driver
driver = webdriver.Chrome()

# Ouverture de la page
driver.get('https://example.com')

# Recherche d'un élément via le Sélecteur CSS
element = driver.find_element_by_css_selector('div#menu > ul > li > a')

# Affichage du texte de l'élément
print(element.text)

# Fermeture du navigateur
driver.quit()

Explications :

  • div#menu > ul > li > a — notre Sélecteur CSS. Il recherchait l'élément de façon similaire à XPath, mais avec une syntaxe plus concise.

3. Différences entre XPath et les Sélecteurs CSS

Tu te demandes quelle est la différence entre XPath et les Sélecteurs CSS ? Excellente question ! Voyons quand utiliser l'un ou l'autre.

Flexibilité vs Simplicité

XPath est plus flexible : tu peux remonter "vers le haut" dans l'arbre DOM et utiliser des conditions logiques complexes avec lui. Cela le rend utile pour des requêtes plus complexes. Cependant, parfois la simplicité des Sélecteurs CSS et leur concision les rendent plus préférables. Les Sélecteurs CSS sont plus faciles à lire et à écrire, surtout quand il s'agit de trouver un élément par classe ou identifiant.

Support des fonctions

XPath prend en charge l'utilisation de fonctions — de la vérification de texte au travail avec des attributs comme contains() ou starts-with(). Les Sélecteurs CSS, en revanche, n'ont pas un support aussi complexe.

Vitesse d'exécution

Dans certains scénarios, les Sélecteurs CSS sont plus rapides. Cela s'explique par le fait que les navigateurs sont initialement optimisés pour travailler avec des Sélecteurs CSS, ce qui en fait le choix par défaut pour des tâches simples.

Syntaxe

XPath a une syntaxe plus complexe, ce qui peut être à la fois un avantage et un inconvénient. Les Sélecteurs CSS sont plus simples à écrire et à apprendre.

4. Application pratique

Passons à l'application de ces connaissances à une tâche réelle. Disons qu'on a une page web avec un tableau de produits, et qu'on doit collecter tous les noms de produits et leurs prix. Voici comment faire :

Exemple avec XPath

Python

from selenium import webdriver

# Configuration du driver
driver = webdriver.Chrome()

# Ouverture de la page
driver.get('https://example.com/products')

# Recherche de tous les éléments de produits
products = driver.find_elements_by_xpath('//table[@class="product-table"]/tbody/tr')

# Extraction des données de chaque produit
for product in products:
    name = product.find_element_by_xpath('.//td[@class="product-name"]').text
    price = product.find_element_by_xpath('.//td[@class="product-price"]').text
    print(f"Produit : {name}, Prix : {price}")

# Fermeture du navigateur
driver.quit()

Exemple avec les Sélecteurs CSS

Python

from selenium import webdriver

# Configuration du driver
driver = webdriver.Chrome()

# Ouverture de la page
driver.get('https://example.com/products')

# Recherche de tous les éléments de produits
products = driver.find_elements_by_css_selector('table.product-table > tbody > tr')

# Extraction des données de chaque produit
for product in products:
    name = product.find_element_by_css_selector('td.product-name').text
    price = product.find_element_by_css_selector('td.product-price').text
    print(f"Produit : {name}, Prix : {price}")

# Fermeture du navigateur
driver.quit()

5. Particularités et erreurs courantes

Quand tu utilises XPath et les Sélecteurs CSS, il y a quelques pièges à éviter. Par exemple, en utilisant des chemins absolus dans XPath, il y a un risque que le moindre changement dans la structure HTML casse ton script. Donc, essaie toujours d'utiliser des chemins relatifs pour rester flexible.

Les Sélecteurs CSS, en revanche, peuvent devenir illisibles s'ils sont trop complexes, il est donc important de trouver un équilibre entre précision et simplicité.

Il est également important de mentionner la gestion des erreurs. Si un élément n'est pas trouvé, Selenium lèvera une NoSuchElementException. Utilise des blocs try-except ou des méthodes d'attente comme WebDriverWait pour gérer cela et rendre tes scripts plus robustes.

1
Étude/Quiz
Introduction à Selenium, niveau 35, leçon 4
Indisponible
Introduction à Selenium
Introduction à Selenium
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION