CodeGym /Cours /Python SELF FR /Recherche d'éléments par attributs HTML : id, class

Recherche d'éléments par attributs HTML : id, class

Python SELF FR
Niveau 35 , Leçon 3
Disponible

1. Bases de la recherche d'éléments

Méthodes de recherche d'éléments

Avant de plonger dans le code, c'est important de comprendre comment on peut rechercher des éléments sur une page web avec Selenium. Selenium propose plusieurs méthodes pratiques pour découvrir des éléments :

  • find_element_by_id() : Recherche un élément par son identifiant unique (id).
  • find_element_by_name() : Permet de trouver un élément via son attribut name.
  • find_element_by_class_name() : Recherche des éléments ayant une classe spécifique (class).
  • find_element_by_tag_name() : Utilise le nom du tag pour rechercher des éléments, par exemple, div, p, a.

Commençons par un exemple simple – chercher un élément via son id. Imagine qu'on a perdu un bouton avec l'inscription "Bouton magique", et qu'on doit le retrouver :

Python

from selenium import webdriver

# Configuration du driver et ouverture du navigateur
driver = webdriver.Chrome()
driver.get('https://example.com')

# Recherche de l'élément par son id
magic_button = driver.find_element_by_id('magic_button_id')

# Travail avec l'élément trouvé (par exemple, extraction du texte)
print(magic_button.text)

# Fin de la session
driver.quit()

Travailler avec les éléments trouvés

Une fois qu'on a trouvé un élément, c'est le moment de décider quoi en faire. On laisse place à l'imagination et on utilise des méthodes Selenium comme text pour obtenir le contenu textuel de l'élément ou get_attribute('attribute_name') pour extraire la valeur de n'importe quel attribut de l'élément.

Supposons que notre élément soit un lien, et qu'on veut savoir où il mène. Voici comment on s'y prendrait :

Python

# Recherche de l'élément contenant le lien
link_element = driver.find_element_by_class_name('link_class')

# Extraction de l'URL de l'attribut href
link_url = link_element.get_attribute('href')
print(f'Ce lien mène à : {link_url}')

2. Méthode find_element_by_id()

La méthode find_element_by_id() est l'une des façons les plus rapides et fiables de trouver un élément sur une page web. Elle permet de localiser les éléments grâce à leur attribut unique id. En HTML, l'attribut id est un identifiant unique, on peut donc être sûr que cette méthode retournera l'élément voulu.

Exemple d'utilisation :

Python

element = driver.find_element_by_id("submit-button")

Dans cet exemple, Selenium recherche un élément avec id="submit-button" et le stocke dans la variable element. Cette approche est pratique pour les boutons, les formulaires, les champs de saisie et d'autres éléments uniques rarement dupliqués sur une page.

Quand l'utiliser ?

L'utilisation de find_element_by_id() est recommandée chaque fois qu'un élément possède un identifiant unique id, car cette méthode offre un accès rapide et précis à l'élément.

2. Méthode find_element_by_name()

La méthode find_element_by_name() recherche les éléments par l'attribut name. Elle est souvent utilisée pour les formulaires et les champs de saisie, notamment lorsque les éléments peuvent avoir des classes ou id semblables mais des name différents. Contrairement à id, l'attribut name n'est pas nécessairement unique, et il peut parfois y avoir plusieurs éléments avec le même name sur une page.

Exemple d'utilisation :

Python

element = driver.find_element_by_name("username")

Ce code cherche un élément avec name="username". Généralement, il s'agit d'un champ de saisie pour le nom d'utilisateur dans les formulaires de connexion.

Quand l'utiliser ?

Cette méthode est utile si un élément sur la page n'a pas de id unique mais possède un attribut name. Elle est particulièrement efficace pour les formulaires de saisie où les éléments sont souvent identifiés par name.

3. Méthode find_element_by_class_name()

La méthode find_element_by_class_name() recherche un élément par sa classe (class). Elle est pratique pour travailler avec le CSS et permet de localiser des éléments partageant le même style. Il faut néanmoins noter que class peut être attribué à plusieurs éléments, donc si on cherche un seul élément, il est important de préciser une classe unique ou d'utiliser une autre méthode.

Exemple d'utilisation :

Python

element = driver.find_element_by_class_name("main-header")

Dans cet exemple, Selenium recherche le premier élément avec la classe main-header.

Quand l'utiliser ?

find_element_by_class_name() est souvent utilisée pour rechercher des en-têtes, des boutons et d'autres éléments stylisés. Cette méthode est particulièrement utile si les éléments n'ont pas de id ou name unique, ou lorsqu'il faut rechercher des éléments par leurs caractéristiques stylistiques.

4. Méthode find_element_by_tag_name()

La méthode find_element_by_tag_name() recherche des éléments par leur nom de tag, par exemple, div, p, a, input. Elle est utile pour obtenir tous les éléments d'un même type, surtout si la structure de la page permet de facilement s'orienter via les tags.

Exemple d'utilisation :

Python

element = driver.find_element_by_tag_name("h1")

Ici, Selenium recherche le premier élément avec le tag h1, généralement utilisé pour les en-têtes sur une page.

Quand l'utiliser ?

La méthode find_element_by_tag_name() est idéale pour rechercher des en-têtes, images, paragraphes et d'autres éléments présentés par un certain type de tag. Cependant, comme il peut y avoir beaucoup de tags identiques sur une page, cette méthode ne pointe pas toujours précisément vers un élément particulier.

5. Particularités et erreurs

Avant d'aller plus loin, prenons une pause et rendons hommage à la diversité de l'HTML. Parfois, des éléments comme des boutons ou des images peuvent ne pas avoir de id ou de classes uniques. Dans ce cas, des méthodes de recherche plus complexes comme XPath et les sélecteurs CSS viennent à la rescousse, et on en parlera dans la prochaine conférence. Mais si vous rencontrez déjà ces éléments, ne stressez pas. C'est juste une partie du fun dans le monde de l'automatisation web.

Fragilité des sélecteurs

Lorsque vous utilisez des attributs comme id et class, rappelez-vous qu'ils peuvent changer. Sélectionner un élément par son id, qui change soudainement, peut entraîner une erreur. Cela est particulièrement vrai pour les pages générées dynamiquement, où les identifiants peuvent être aléatoires. Solution ? Utiliser des attributs plus stables ou des approches combinées.

6. Application pratique

Maintenant nous savons comment rechercher des éléments par id, classe et nom. L'utilité de ce savoir est immense, surtout quand il s'agit d'automatiser les interactions avec les pages web. Les éléments trouvés avec succès peuvent être utilisés pour remplir des formulaires, cliquer sur des boutons ou extraire des informations – des actions qui peuvent considérablement accélérer votre travail et éliminer les tâches répétitives.

Imagine une entreprise où chaque employé passe 10 minutes par jour à remplir un même formulaire sur un site. Et c'est là que Selenium entre en scène : il gérera toute la routine en quelques minutes pendant que tu dégustes ton café du matin.

Pour ceux qui sont déjà intéressés par des cas pratiques, l'automatisation avec Selenium est utilisée pour tester des applications web, surveiller les changements sur les sites et même pour récupérer un mot de passe oublié sur ton réseau social préféré, si jamais les algorithmes décident que ce n'est pas toi sur ces photos avec des pandas.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION