Selenium

Localiser des éléments par des sélecteurs CSS avec Selenium

Localiser des éléments par des sélecteurs CSS avec Selenium
La localisation et la sélection d'éléments de la page Web sont la clé du grattage Web avec Selenium. Pour localiser et sélectionner des éléments de la page Web, vous pouvez utiliser des sélecteurs CSS dans Selenium.Dans cet article, je vais vous montrer comment localiser et sélectionner des éléments de pages Web à l'aide de sélecteurs CSS dans Selenium avec la bibliothèque python Selenium. Alors, commençons.

Conditions préalables:

Pour essayer les commandes et exemples de cet article, vous devez avoir,

1) Une distribution Linux (de préférence Ubuntu) installée sur votre ordinateur.
2) Python 3 installé sur votre ordinateur.
3) PIP 3 installé sur votre ordinateur.
4) Python virtualenv package installé sur votre ordinateur.
5) Navigateurs Web Mozilla Firefox ou Google Chrome installés sur votre ordinateur.
6) Doit savoir comment installer le pilote Firefox Gecko ou le pilote Web Chrome.

Pour remplir les conditions 4, 5 et 6, lisez mon article Introduction à Selenium avec Python 3 chez Linuxhint.com.

Vous pouvez trouver de nombreux articles sur les autres sujets sur LinuxHint.com. N'oubliez pas de les consulter si vous avez besoin d'aide.

Configuration d'un répertoire de projet :

Pour que tout reste organisé, créez un nouveau répertoire de projet sélecteur-sélénium-css/ comme suit:

$ mkdir -pv sélénium-css-selector/drivers

Naviguez vers le sélecteur-sélénium-css/ répertoire du projet comme suit :

$ cd sélecteur-sélénium-css/

Créez un environnement virtuel Python dans le répertoire du projet comme suit :

$ virtualenv .venv

Activez l'environnement virtuel comme suit :

$ source .venv/bin/activer

Installez la bibliothèque Selenium Python à l'aide de PIP3 comme suit :

$ pip3 installer le sélénium

Téléchargez et installez tous les pilotes Web requis dans le Conducteurs/ répertoire du projet. J'ai expliqué le processus de téléchargement et d'installation des pilotes Web dans mon article Introduction à Selenium avec Python 3. Si vous avez besoin d'aide, recherchez sur LinuxHint.com pour cet article.

Obtenez le sélecteur CSS à l'aide de l'outil de développement Chrome :

Dans cette section, je vais vous montrer comment trouver le sélecteur CSS de l'élément de page Web que vous souhaitez sélectionner avec Selenium à l'aide de l'outil de développement intégré du navigateur Web Google Chrome.

Pour obtenir le sélecteur CSS à l'aide du navigateur Web Google Chrome, ouvrez Google Chrome et visitez le site Web à partir duquel vous souhaitez extraire des données. Ensuite, appuyez sur le bouton droit de la souris (RMB) sur une zone vide de la page et cliquez sur Inspecter pour ouvrir le Outil de développement Chrome.

Vous pouvez également appuyer sur + Changement + je pour ouvrir le Outil de développement Chrome.

Outil de développement Chrome devrait être ouvert.

Pour trouver la représentation HTML de l'élément de page Web souhaité, cliquez sur le bouton Inspecter() icône comme indiqué dans la capture d'écran ci-dessous.

Ensuite, survolez l'élément de page Web souhaité et appuyez sur le bouton gauche de la souris (LMB) pour le sélectionner.

La représentation HTML de l'élément Web que vous avez sélectionné sera mise en surbrillance dans le Éléments onglet de Outil de développement Chrome comme vous pouvez le voir dans la capture d'écran ci-dessous.

Pour obtenir le sélecteur CSS de l'élément souhaité, sélectionnez l'élément dans le Éléments onglet de Outil de développement Chrome et faites un clic droit (RMB) dessus. Ensuite, sélectionnez Copie > Sélecteur de copie comme indiqué dans la capture d'écran ci-dessous.

J'ai collé le sélecteur CSS dans un éditeur de texte. Le sélecteur CSS ressemble à celui indiqué dans la capture d'écran ci-dessous.

Obtenez le sélecteur CSS à l'aide de l'outil de développement Firefox :

Dans cette section, je vais vous montrer comment trouver le sélecteur CSS de l'élément de page Web que vous souhaitez sélectionner avec Selenium à l'aide de l'outil de développement intégré du navigateur Web Mozilla Firefox.

Pour obtenir le sélecteur CSS à l'aide du navigateur Web Firefox, ouvrez Firefox et visitez le site Web à partir duquel vous souhaitez extraire des données. Ensuite, appuyez sur le bouton droit de la souris (RMB) sur une zone vide de la page et cliquez sur Inspecter l'élément (Q) pour ouvrir le Outil de développement Firefox.

Outil de développement Firefox devrait être ouvert.

Pour trouver la représentation HTML de l'élément de page Web souhaité, cliquez sur le bouton Inspecter() icône comme indiqué dans la capture d'écran ci-dessous.

Ensuite, survolez l'élément de page Web souhaité et appuyez sur le bouton gauche de la souris (LMB) pour le sélectionner.

La représentation HTML de l'élément Web que vous avez sélectionné sera mise en surbrillance dans le Inspecteur onglet de Outil de développement Firefox comme vous pouvez le voir dans la capture d'écran ci-dessous.

Pour obtenir le sélecteur CSS de l'élément souhaité, sélectionnez l'élément dans le Inspecteur onglet de Outil de développement Firefox et faites un clic droit (RMB) dessus. Ensuite, sélectionnez Copie > Sélecteur CSS comme indiqué dans la capture d'écran ci-dessous.

Le sélecteur CSS de l'élément souhaité devrait ressembler à ceci.

Extraction de données à l'aide du sélecteur CSS avec Selenium :

Dans cette section, je vais vous montrer comment sélectionner des éléments de page Web et en extraire des données à l'aide de sélecteurs CSS avec la bibliothèque Selenium Python.

Tout d'abord, créez un nouveau script Python ex00.py et tapez les lignes de codes suivantes.

à partir du pilote Web d'importation de sélénium
du sélénium.pilote Web.commun.clés importer des clés
du sélénium.pilote Web.commun.par importation par
options = pilote Web.Options Chrome()
options.sans tête = vrai
navigateur = pilote Web.Chrome(executable_path="./drivers/chromedriver", options=options)
le navigateur.obtenir("https://www.unixtimestamp.com/")
horodatage = navigateur.find_element_by_css_selector('h3.texte-danger:nt-enfant(3)')
print('Horodatage actuel : %s' % (horodatage.texte.diviser(")[0]))
le navigateur.Fermer()

Une fois que vous avez terminé, enregistrez le ex00.py Script Python.

La ligne 1-3 importe tous les composants Selenium requis.

La ligne 5 crée un objet Options Chrome et la ligne 6 active le mode sans tête pour le navigateur Web Chrome.

La ligne 8 crée un Chrome le navigateur objet en utilisant le Chromedriver binaire de la Conducteurs/ répertoire du projet.

La ligne 10 indique au navigateur de charger le site Web unixtimestamp.com.

La ligne 12 trouve l'élément qui contient les données d'horodatage de la page à l'aide du sélecteur CSS et les stocke dans le horodatage variable.

La ligne 13 analyse les données d'horodatage de l'élément et les imprime sur la console.

Voici comment la structure HTML des données d'horodatage UNIX dans unixtimestamp.com ressemble.

La ligne 14 ferme le navigateur.

Exécutez le script Python ex00.py comme suit:

$ python3 ex00.py

Comme vous pouvez le voir, les données d'horodatage sont imprimées à l'écran.

Ici, j'ai utilisé le le navigateur.find_element(Par, sélecteur) méthode.

Comme nous utilisons des sélecteurs CSS, le premier paramètre sera Par.CSS_SELECTOR et le deuxième paramètre sera le sélecteur CSS lui-même.

À la place de le navigateur.find_element() méthode, vous pouvez également utiliser le navigateur.find_element_by_css_selector(sélecteur) méthode. Cette méthode n'a besoin que d'un sélecteur CSS pour fonctionner. Le résultat sera le même.

le le navigateur.find_element() et le navigateur.find_element_by_css_selector() les méthodes sont utilisées pour rechercher et sélectionner un seul élément de la page Web. Si vous souhaitez rechercher et sélectionner plusieurs éléments à l'aide des sélecteurs CSS, vous devez utiliser le navigateur.find_elements() et le navigateur.find_elements_by_css_selector() méthodes.

le le navigateur.find_elements() La méthode prend les mêmes arguments que la le navigateur.find_element() méthode.

le le navigateur.find_elements_by_css_selector() La méthode prend le même argument que la le navigateur.find_element_by_css_selector() méthode.

Voyons un exemple d'extraction d'une liste de noms à l'aide de sélecteurs CSS à partir de random-name-generator.info avec Selenium.

Comme vous pouvez le voir, la liste non ordonnée a le nom de classe liste de nom. Donc, nous pouvons utiliser le sélecteur CSS .nameList li pour sélectionner tous les noms de la page Web.

Passons en revue un exemple de sélection de plusieurs éléments de la page Web à l'aide de sélecteurs CSS.

Créer un nouveau script Python ex01.py et tapez les lignes de codes suivantes dedans.

à partir du pilote Web d'importation de sélénium
du sélénium.pilote Web.commun.clés importer des clés
du sélénium.pilote Web.commun.par importation par
options = pilote Web.Options Chrome()
options.sans tête = vrai
navigateur = pilote Web.Chrome(executable_path="./drivers/chromedriver", options=options)
le navigateur.get("http://random-name-generator.Info/")
noms = navigateur.find_elements(Par.CSS_SELECTOR, '.nameList li')
pour le nom dans les noms :
imprimer(nom.texte)
le navigateur.Fermer()

Une fois que vous avez terminé, enregistrez le ex01.py Script Python.

La ligne 1-8 est la même que dans ex00.py Script Python. Donc, je ne vais pas les expliquer à nouveau ici.

La ligne 10 indique au navigateur de charger le générateur de noms aléatoires du site Web.Info.

La ligne 12 sélectionne la liste de noms à l'aide de la le navigateur.find_elements() méthode. Cette méthode utilise le sélecteur CSS .nameList li pour trouver la liste des noms. Ensuite, la liste de noms est stockée dans le des noms variable.

Aux lignes 13 et 14, un pour la boucle est utilisée pour parcourir le des noms lister et imprimer les noms sur la console.

La ligne 16 ferme le navigateur.

Exécutez le script Python ex01.py comme suit:

$ python3 ex01.py

Comme vous pouvez le voir, les noms sont extraits de la page Web et imprimés sur la console.

Au lieu d'utiliser le le navigateur.find_elements() méthode, vous pouvez également utiliser la le navigateur.find_elements_by_css_selector() la méthode comme avant. Cette méthode n'a besoin que d'un sélecteur CSS pour fonctionner. Le résultat sera le même.

Principes de base des sélecteurs CSS :

Vous pouvez toujours trouver le sélecteur CSS d'un élément de page Web à l'aide de l'outil de développement du navigateur Web Firefox ou Chrome. Ce sélecteur CSS généré automatiquement peut ne pas être ce que vous voulez. Parfois, vous devrez peut-être écrire votre sélecteur CSS.

Dans cette section, je vais parler des bases des sélecteurs CSS afin que vous puissiez comprendre ce qu'un certain sélecteur CSS sélectionne à partir d'une page Web et écrire votre sélecteur CSS personnalisé si nécessaire.

Si vous souhaitez sélectionner un élément de la page Web à l'aide de l'ID un message, le sélecteur CSS sera #un message.

Le sélecteur CSS .vert sélectionnera un élément en utilisant un nom de classe vert.

Si vous souhaitez sélectionner un élément (classe message) à l'intérieur d'un autre élément (classe récipient), le sélecteur CSS sera .récipient .message

Le sélecteur CSS .message.Succès sélectionnera l'élément qui a deux classes CSS message et Succès.

Pour sélectionner tous les p balises, vous pouvez utiliser le sélecteur CSS p.

Pour sélectionner uniquement le p balises à l'intérieur du div balises, vous pouvez utiliser le sélecteur CSS div p

Pour sélectionner le p tags qui sont les frères et sœurs directs du div balises, vous pouvez utiliser le sélecteur CSS div > p

Pour sélectionner tous les portée et p balises, vous pouvez utiliser le sélecteur CSS p, envergure

Pour sélectionner le p balise immédiatement après le div tag, vous pouvez utiliser le sélecteur CSS div + p

Pour sélectionner le p balise après le div tag, vous pouvez utiliser le sélecteur CSS div ~ p

Pour sélectionner tous les p balises qui ont le nom de la classe message, vous pouvez utiliser le sélecteur CSS p.message

Pour sélectionner tous les portée balises qui ont le nom de la classe message, vous pouvez utiliser le sélecteur CSS portée.message

Pour sélectionner tous les éléments qui ont l'attribut href, vous pouvez utiliser le sélecteur CSS [href]

Pour sélectionner l'élément qui a l'attribut Nom et la valeur de la Nom l'attribut est Nom d'utilisateur, vous pouvez utiliser le sélecteur CSS [nom="nom d'utilisateur"]

Pour sélectionner tous les éléments qui ont l'attribut alt et la valeur de la alt attribut contenant la sous-chaîne vscode, vous pouvez utiliser le sélecteur CSS [alt~=”vscode”]

Pour sélectionner tous les éléments qui ont le href attribut et la valeur du href l'attribut commence par la chaîne https, vous pouvez utiliser le sélecteur CSS [href^="https"]

Pour sélectionner tous les éléments qui ont le href attribut et la valeur du href attribut se terminant par la chaîne .com, vous pouvez utiliser le sélecteur CSS [href$=".com"]

Pour sélectionner tous les éléments qui ont le href attribut et la valeur du href l'attribut a la sous-chaîne Google, vous pouvez utiliser le sélecteur CSS [href*="google"]

Si vous souhaitez sélectionner le premier je suis étiquette à l'intérieur du ul tag, vous pouvez utiliser le sélecteur CSS ul li:premier-enfant

Si vous souhaitez sélectionner le premier je suis étiquette à l'intérieur du ul tag, vous pouvez également utiliser le sélecteur CSS ul li:nième-enfant(1)

Si vous souhaitez sélectionner le dernier je suis étiquette à l'intérieur du ul tag, vous pouvez utiliser le sélecteur CSS ul li:dernier enfant

Si vous souhaitez sélectionner le dernier je suis étiquette à l'intérieur du ul tag, vous pouvez également utiliser le sélecteur CSS ul li:nt-dernier-enfant(1)

Si vous souhaitez sélectionner le deuxième je suis étiquette à l'intérieur du ul tag en partant du début, vous pouvez utiliser le sélecteur CSS ul li:ntième-enfant(2)

Si vous souhaitez sélectionner le troisième je suis étiquette à l'intérieur du ul tag en partant du début, vous pouvez utiliser le sélecteur CSS ul li:ntième-enfant(3)

Si vous voulez sélectionner le deuxième je suis étiquette à l'intérieur du ul tag commençant par la fin, vous pouvez utiliser le sélecteur CSS ul li:nt-dernier-enfant(2)

Si vous souhaitez sélectionner le troisième je suis étiquette à l'intérieur du ul tag commençant par la fin, vous pouvez utiliser le sélecteur CSS ul li:nt-dernier-enfant(3)

Ce sont les sélecteurs CSS les plus courants. Vous vous retrouverez à les utiliser presque sur tous les projets Selenium. Il y a beaucoup plus de sélecteurs CSS. Vous pouvez trouver une liste de tous dans les w3schools.com Référence des sélecteurs CSS.

Clôture :

Dans cet article, j'ai montré comment localiser et sélectionner des éléments de page Web à l'aide de sélecteurs CSS avec Selenium. J'ai également discuté des bases des sélecteurs CSS. Vous devriez pouvoir utiliser les sélecteurs CSS confortablement pour vos projets Selenium.

Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...
Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...
Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...