Comment trouver un élément par texte avec le sélénium

Comment trouver un élément par texte avec le sélénium
Localiser et sélectionner des éléments dans la page Web est la clé du grattage Web avec le sélénium. Vous pouvez sélectionner des éléments à l'aide d'un nom de balise, d'un ID, d'un nom de classe, d'un sélecteur XPath, d'un sélecteur CSS, etc. en sélénium. Vous pouvez également sélectionner des éléments qui ont un texte spécifique avec le sélénium. Ceci est utile pour sélectionner facilement des liens et des boutons dans la page Web. Même si la structure de la page change, tant que le texte de l'élément de page Web reste le même, votre sélecteur devrait très bien fonctionner. C'est l'avantage de sélectionner des liens et des boutons en utilisant du texte dans le sélénium.

Dans cet article, je vais vous montrer comment localiser et sélectionner des éléments à partir de pages Web en utilisant du texte en sélénium avec la bibliothèque Selenium Python. Alors, commençons.

Conditions préalables:

Pour essayer les commandes et les 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 virtualv Package installé sur votre ordinateur.
  5. Mozilla Firefox ou Browsers Web Google Chrome installé sur votre ordinateur.
  6. Doit savoir comment installer le pilote Firefox Gecko ou le pilote Web Chrome.

Pour répondre aux exigences 4, 5 et 6, lisez mon article Introduction au sélénium dans Python 3.

Vous pouvez trouver de nombreux articles sur les autres sujets sur Linuxhint.com. Assurez-vous de les vérifier si vous avez besoin d'aide.

Configuration d'un répertoire de projet:

Pour garder tout organisé, créez un nouveau répertoire de projet sélénium-text-select / comme suit:

$ mkdir -pv sélénium-text-select / pilotes

Accédez à la sélénium-text-select / Répertoire de projet comme suit:

$ CD Selenium-Text-Select /

Créez un environnement virtuel Python dans le répertoire de 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 tout le pilote Web requis dans le Conducteurs/ Annuaire du projet. J'ai expliqué le processus de téléchargement et d'installation de pilotes Web dans mon article Introduction au sélénium dans Python 3.

Trouver des éléments par texte:

Dans cette section, je vais vous montrer quelques exemples de recherche et de sélection d'éléments de page Web par texte avec la bibliothèque Selenium Python.

Je vais commencer par l'exemple le plus simple de sélection des éléments de page Web par texte, en sélectionnant des liens dans la page Web.

Dans la page de connexion de Facebook.com, nous avons un lien Compte oublié? Comme vous pouvez le voir dans la capture d'écran ci-dessous. Sélectionnons ce lien avec le sélénium.

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

à partir de Selenium Import WebDriver
de sélénium.webdriver.commun.Clés Import les clés
de sélénium.webdriver.commun.par importation par
à partir de temps pour sommeil
navigateur = webdriver.Chrome (exécutable_path = "./ pilotes / chromedriver ")
navigateur.get ("https: // www.Facebook.com / ")
FORMOTACTALLINK = BROWSER.find_element (par.Xpath, "Post-66569-_HLK47727696">
// * [text () = 'Compte oublié?'] ")
oublier.Send_keys (clés.ENTRER)

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

La ligne 1 à 4 importe tous les composants requis dans le programme Python.

La ligne 6 crée un chrome navigateur objet en utilisant le chromedriver binaire du Conducteurs/ Annuaire du projet.

La ligne 8 indique au navigateur de charger le site Web Facebook.com.

La ligne 10 trouve le lien qui a le texte Compte oublié? Utilisation du sélecteur XPATH. Pour cela, j'ai utilisé le sélecteur XPATH // * [text () = 'Compte oublié?'].

Le sélecteur XPATH commence par //, ce qui signifie que l'élément peut être n'importe où sur la page. Le * Le symbole indique à Selenium de sélectionner n'importe quelle balise (un ou p ou portée, etc.) qui correspond à la condition à l'intérieur des crochets []. Ici, la condition est que le texte de l'élément est égal au Compte oublié?

Le texte() La fonction XPath est utilisée pour obtenir le texte d'un élément.

Par exemple, texte() Retour Bonjour le monde S'il sélectionne l'élément HTML suivant.

Bonjour le monde

La ligne 11 envoie le touche appuyez sur le Compte oublié? Lien.

Exécutez le script Python ex01.py avec la commande suivante:

$ python ex01.py

Comme vous pouvez le voir, le navigateur Web trouve, sélectionne et appuie dans clé sur le Compte oublié? Lien.

Le Compte oublié? Le lien amène le navigateur à la page suivante.

De la même manière, vous pouvez facilement rechercher des éléments qui ont la valeur d'attribut souhaitée.

Ici le Connexion Le bouton est un saisir élément qui a le valeur attribut Connexion. Voyons comment sélectionner cet élément par texte.

Créer un nouveau script Python ex02.py et saisissez les lignes de codes suivantes.

à partir de Selenium Import WebDriver
de sélénium.webdriver.commun.Clés Import les clés
de sélénium.webdriver.commun.par importation par
à partir de temps pour sommeil
navigateur = webdriver.Chrome (exécutable_path = "./ pilotes / chromedriver ")
navigateur.get ("https: // www.Facebook.com / ")
sommeil (5)
EmailInput = navigateur.find_element (par.Xpath, "// entrée [@ id = 'email']")
PasswordInput = navigateur.find_element (par.Xpath, "// input [@ id = 'pass']")
Loginbutton = navigateur.find_element (par.Xpath, "// * [@ valeur = 'se connecter']")
EmailInput.send_keys ('mandeming @ e-mail.com ')
sommeil (5)
pass de passe.send_keys ('Secret-Pass')
sommeil (5)
Loginbutton.Send_keys (clés.ENTRER)

Une fois que vous avez terminé, enregistrez le ex02.py Script python.

Ligne 1 à 4 importe tous les composants requis.

La ligne 6 crée un chrome navigateur objet en utilisant le chromedriver binaire du Conducteurs/ Annuaire du projet.

La ligne 8 indique au navigateur de charger le site Web Facebook.com.

Tout se passe si vite une fois que vous avez exécuté le script. Donc, j'ai utilisé le dormir() Fonctionne plusieurs fois ex02.py pour retarder les commandes du navigateur. De cette façon, vous pouvez observer comment tout fonctionne.

La ligne 11 trouve la zone de texte d'entrée par e-mail et stocke une référence de l'élément dans le EmailInput variable.

La ligne 12 trouve la zone de texte d'entrée par e-mail et stocke une référence de l'élément dans le EmailInput variable.

La ligne 13 trouve l'élément d'entrée qui a l'attribut valeur de Connexion Utilisation du sélecteur XPATH. Pour cela, j'ai utilisé le sélecteur XPATH // * [@ value = 'se connecter'].

Le sélecteur XPATH commence par //. Cela signifie que l'élément peut être n'importe où sur la page. Le * Le symbole indique à Selenium de sélectionner n'importe quelle balise (saisir ou p ou portée, etc.) qui correspond à la condition à l'intérieur des crochets []. Ici, la condition est, l'attribut d'élément valeur est égal à Connexion.

La ligne 15 envoie le mannequin d'entrée @ e-mail.com à la zone de texte d'entrée par e-mail et la ligne 16 retarde la prochaine opération.

La ligne 18 envoie le pass secret d'entrée à la zone de texte d'entrée de mot de passe et la ligne 19 retarde l'opération suivante.

La ligne 21 envoie le touche Appuyez sur le bouton de connexion.

Courir le ex02.py Script python avec la commande suivante:

$ Python3 Ex02.py

Comme vous pouvez le voir, les zones de texte par e-mail et mot de passe sont remplies de nos valeurs factices et du Connexion Le bouton est appuyé.

Ensuite, la page accédez à la page suivante.

Trouver des éléments par texte partiel:

Dans la section précédente, je vous ai montré comment trouver des éléments par texte spécifique. Dans cette section, je vais vous montrer comment trouver des éléments à partir de pages Web en utilisant du texte partiel.

Dans l'exemple, ex01.py, J'ai cherché l'élément de lien qui a le texte Compte oublié?. Vous pouvez rechercher le même élément de lien à l'aide de texte partiel tel que ACC oublié. Pour ce faire, vous pouvez utiliser le contient() Fonction XPath, comme indiqué à la ligne 10 de ex03.py. Le reste des codes est le même que dans ex01.py. Les résultats seront les mêmes.

Dans la ligne 10 de ex03.py, La condition de sélection a utilisé le contient (source, texte) Fonction XPATH. Cette fonction prend 2 arguments, source, et texte.

Le contient() La fonction vérifie si le texte donné dans le deuxième argument correspond partiellement au source valeur dans le premier argument.

La source peut être le texte de l'élément (texte()) ou la valeur d'attribut de l'élément (@ATTR_NAME).

Dans ex03.py, Le texte de l'élément est vérifié.

Une autre fonction XPath utile pour trouver des éléments de la page Web à l'aide de texte partiel est commence avec (source, texte). Cette fonction a les mêmes arguments que le contient() fonction et est utilisé de la même manière. La seule différence est que le commence avec() La fonction vérifie si le deuxième argument texte est la chaîne de départ du premier argument source.

J'ai réécrit l'exemple ex03.py Pour rechercher l'élément pour lequel le texte commence par Oublié, Comme vous pouvez le voir à la ligne 10 de ex04.py. Le résultat est le même que dans ex02 et ex03.py.

J'ai aussi réécrit ex02.py afin qu'il recherche l'élément d'entrée pour lequel le valeur L'attribut commence par Enregistrer, Comme vous pouvez le voir à la ligne 13 de ex05.py. Le résultat est le même que dans ex02.py.

Conclusion:

Dans cet article, je vous ai montré comment trouver et sélectionner des éléments des pages Web par texte avec la bibliothèque Selenium Python. Maintenant, vous devriez être en mesure de trouver des éléments à partir de pages Web par un texte spécifique ou un texte partiel avec la bibliothèque Selenium Python.