Sélénium Automatisation des navigateurs Web

Sélénium Automatisation des navigateurs Web

Le sélénium est utilisé pour automatiser les tâches ennuyeuses; il automatise les navigateurs. De la navigation sur le Web pour se connecter automatiquement aux comptes à la création de robots pour diverses tâches peut être réalisée en utilisant du sélénium.

Tout d'abord, installons les dépendances:

pip installer le sélénium
pip install webdriver-manager

Naviguer sur le Web

Nous importons les dépendances:

à partir de Selenium Import WebDriver
de webdriver_manager.Chrome Import ChromEdriverManager
Nous initialisons ensuite le webdriver:
pilote = webdriver.Chrome (chromEdrivermerManager ().installer())

Dans le premier cas, essayons de naviguer sur une page Web en utilisant le Méthode get (). Le Méthode get () ouvrira la page Web ou l'URL qui a été entrée; Veuillez noter que le lien complet doit être fourni pour que cela fonctionne.

conducteur.get ("https: // DuckDuckgo.com / ")

Supposons que vous souhaitiez maximiser la fenêtre en utilisant le maximiser_window () Méthode et ne pas faire passer Python dans le reste du code; vous utiliseriez alors le Implicitly_wait () Méthode pour faire une pause.

conducteur.maximiser_window ()
conducteur.implicitement_wait (4)

Si vous souhaitez des informations sur le site Web, vous pouvez utiliser la méthode du titre pour obtenir le nom ou le titre du site Web, la méthode actuelle_url pour obtenir l'URL et la page_source pour obtenir le code HTML de la page.

imprimer (conducteur.titre)
imprimer (conducteur.current_url)
imprimer (conducteur.page_source)

Pour saisir un texte dans la barre de recherche, nous devons d'abord essayer d'identifier la barre de recherche à l'aide du «inspecter”Bouton (clic droit -> Inspecter).

Pour Duckduckgo.com, il y a une pièce d'identité disponible, mais vous pouvez également obtenir d'autres attributs. La méthode suivante que nous utilisons est la méthode find_element_by_id (). Le but de cette méthode est de sélectionner l'élément de préoccupation.

search_bar = pilote.find_element_by_id ("search_form_input_homepage")

Cependant, vous pouvez remplacer cela par l'un des autres attributs. Par exemple, si vous avez le nom disponible, utilisez le find_elements_by_name () méthode. Nous n'avons pas eu à utiliser l'ID; Nous aurions pu utiliser quelque chose d'autre que nous voulions que nous voulions. Par exemple, nous aurions pu utiliser le nom comme suit:

search_bar = pilote.find_element_by_name ("q")

Puisque nous avons localisé la barre de recherche, nous pouvons désormais saisir un morceau de texte en utilisant le send_keys () méthode.

barre de recherche.send_keys ("Seleniumhq")

Théoriquement, ce que nous ferions, c'est de cliquer sur le bouton Suivant. Alors que faisons-nous? Oui, tu l'as deviné! Nous méthode les éléments et trouvons l'ID ou un autre attribut du bouton suivant. Ensuite, nous utilisons la méthode click () pour cliquer sur le bouton que nous avons sélectionné à l'aide d'un attribut (comme ID).

bouton = pilote.find_element_by_id ("search_button_homepage")
bouton.Cliquez sur()

À ce stade, vous obtenez une liste de sites Web; C'est un peu comme taper le séléniumhq dans la barre de recherche du DuckDuckgo.site com et en appuyant sur le bouton suivant. Maintenant, essayons de cliquer sur la première page que nous obtenons. Ici, je vais utiliser xpath, mais vous pouvez utiliser l'un des attributs. Veuillez noter que lorsque vous utilisez XPATH, les guillemets à l'intérieur sont simples et à l'extérieur sont doubles ("// * [@ id = 'r1-0'] / div / h2 / a [1]").

page = pilote.find_element_by_xpath ("// * [@ id = 'r1-0'] / div / h2 / a [1]")
page.Cliquez sur()

Se connecter à un compte de messagerie

Maintenant, supposons que nous voulons nous connecter à un compte de messagerie. Comme toujours, nous avons commencé à importer les modules nécessaires et à les initialiser comme nous l'avons fait pour naviguer sur une page Web. Ici, nous importerons également du temps.

à partir de Selenium Import WebDriver
de webdriver_manager.Chrome Import ChromEdriverManager
heure d'importation
pilote = webdriver.Chrome (chromEdrivermerManager ().installer())
conducteur.get ("https: // www.Gmail.com / ")
conducteur.maximiser_window ()
conducteur.implicitement_wait (4)
utilisateur = pilote.find_element_by_xpath ("// * [@ id = 'identifierid']")
utilisateur.send_keys ("VY814683 @ gmail.com ")
Suivant = pilote.find_element_by_xpath ("// * [@ id = 'identifierNext'] / div / bouton / div [2]")
suivant.Cliquez sur()

Ensuite, nous allons utiliser le temps.dormir() Méthode pour éviter les erreurs de synchronisation (parfois, il faut plus de temps pour charger une page, et pendant qu'il se charge, le reste du script est exécuté et une erreur rapportée). Afin d'éviter les erreurs de synchronisation, nous allons lui donner le temps de tout charger.

temps.sommeil (3)
mot de passe = pilote.find_element_by_xpath ("// * [@ id = 'mot de passe'] / div [1] / div / div [1] / entrée")
mot de passe.send_keys ("mot de passe1.")
Next2 = pilote.find_element_by_xpath ("// * [@ id = 'passwordnext'] / div / bouton / div [2]")
suivant2.Cliquez sur()

Envoi de courriels à l'aide de sélénium

Pour envoyer des e-mails, nous avons besoin de deux parties: comment nous connecter à Gmail de la section précédente et comment envoyer des e-mails de cette section. L'envoi d'un e-mail est aussi simple que de naviguer sur le Web ou même de se connecter à Gmail. Encore une fois, nous choisissons la méthode find_element_by_xpath () ou qui est similaire telle que find_element_by_id () ou encore un autre pour trouver chaque composant du message à envoyer - le bouton Compose, la barre d'entrée de destination, la barre d'entrée du sujet, le corps , et le bouton d'envoi. Nous devons les localiser, les remplir de texte en cas de besoin et cliquer sur les boutons. Assez simple. Alors essayons-le:

Tout d'abord, trouvons le bouton Composer à l'aide de XPATH, puis cliquez dessus:

temps.sommeil (1)
compose_button = pilote.find_element_by_xpath ("// * [@ id = ': 2p'] / div / div")
compose_button.Cliquez sur()

Ensuite, ajoutons une adresse de destination dans la barre d'entrée d'adresse de destination:

temps.sommeil (2)
to_input_bar = pilote.find_element_by_id (': 8c')
to_input_bar.send_keys ("VY814683 @ gmail.com ")

Maintenant, nous ajoutons un sujet, un corps et cliquez sur le bouton Envoyer:

sujet = pilote.find_element_by_id (': 7u')
sujet.Send_keys ("Tester Email")
corps = conducteur.find_element_by_xpath ("// * [@ id = ': 8z']")
corps.Send_keys ("Ceci est un message automatisé envoyé à l'aide de sélénium.")
send_button = pilote.find_element_by_xpath ("// * [@ id = ': 7k']")
bouton d'envoi.Cliquez sur()

Ok, donc, faire un programme simple pour se connecter et envoyer des e-mails est maintenant trop facile? Nous n'avons pas à nous arrêter là; Nous pouvons créer toutes sortes de robots.

Actions de souris

La prochaine chose à apprendre est de gérer les actions de la souris - de la volonté de glisser-déposer des fichiers.

Nous devons d'abord spécifier les onglets; Dans ce cas, je spécifierai trois onglets - l'onglet Home, l'onglet électronique et l'onglet Phone Cell (le téléphone portable est imbriqué dans l'électronique). OK, donc pour cet exemple, j'ai choisi eBay.Californie. Sur ebay.CA, il y a de nombreux onglets - un pour la maison et un pour l'électronique. Nous commençons généralement sur l'onglet Home. Ici, disons que j'aimerais naviguer dans l'onglet électronique, puis l'onglet de téléphone portable et d'accessoires et de cliquer dessus. Nous pourrions utiliser des actions de souris pour réaliser ce qui suit.

Nous commençons par importer l'eBay nécessaire et ouvrir.Californie.

À partir de Selenium Import WebDriver
de sélénium.webDriver Import ActionChains
de webdriver_manager.Chrome Import ChromEdriverManager
heure d'importation
pilote = webdriver.Chrome (chromEdrivermerManager ().installer())
conducteur.get ("https: // www.eBay.Californie/")

Ensuite, nous devons ajouter les éléments qui nous préoccupent. Dans ce cas, j'ai les trois boîtes rouges sur l'image précédente.

Accueil = conducteur.find_element_by_xpath ("// * [@ id = 'MainContent'] / div [1] / ul / li [1] / span")
électronique = pilote.find_element_by_xpath ("// * [@ id = 'MainContent'] / div [1] / ul / li [5] / a")
Cell_phone = pilote.find_element_by_xpath ("// * [@ id = 'MainContent'] / div [1] / ul / li [5] / div [2] / div [1] / nav [1] / ul / li [1] / a ")

Nous initialisons ensuite le Chains d'action et utilisez le move_to_element () Méthode pour se déplacer de la maison en électronique et en téléphones portables. Une fois à l'onglet Téléphone cellulaire et accessoires, nous cliquons dessus. Pour que tout cela fonctionne, nous devons ajouter la méthode perform () à la fin, ou rien ne se passera.

Actions = ActionChains (conducteur)
Next_step = actions.MOVE_TO_ELlement (Home).MOVE_TO_ELlement (électronique)
L'étape suivante.move_to_element (cell_phone).Cliquez sur()
L'étape suivante.effectuer()

Cependant, vous pouvez effectuer diverses actions avec la souris - du clic droit à la traînée et des gouttes. Prenons un exemple où vous pouvez cliquer avec le bouton droit. Pour cliquer avec le bouton droit, vous avez besoin de la méthode context_click (); passer à l'intérieur de ce que vous souhaitez cliquer. Dans ce cas, nous souhaitons d'abord un clic droit sur le bouton, nous disons donc le pilote.context_click (bouton) - cliquez avec le bouton avec le bouton. Ensuite, lorsque le clic droit nous montre un menu de sélection avec des options, nous lui demandons de cliquer sur l'une des options affichées - Cliquez (Copier), qui cliquera sur l'onglet Copier.

à partir de Selenium Import WebDriver
de sélénium.webDriver Import ActionChains
de webdriver_manager.Chrome Import ChromEdriverManager
pilote = webdriver.Chrome (chromEdrivermerManager ().installer())
conducteur.get ("https: // swisnl.github.IO / jQuery-ContextMenu / Demo / Menu-Title.html ")
bouton = pilote.find_element_by_xpath ("/ html / body / div / section / div / div / div / p / span [1]")
copie = pilote.find_element_by_xpath ("/ html / body / ul [1] / li [3]")
Actions = ActionChains (conducteur)
Actions.context_click (bouton).Cliquez sur (Copier)
Actions.effectuer()

Vous pouvez faire tellement de choses avec le sélénium, mais nous allons également jeter un œil à Drag and Drop. Il existe deux façons de faire glisser et de laisser tomber un élément dans sa destination cible. L'un utilise la méthode drag_and_drop (), et l'autre utilise une technique plus compliquée:

à partir de Selenium Import WebDriver
de sélénium.webDriver Import ActionChains
de webdriver_manager.Chrome Import ChromEdriverManager
heure d'importation
pilote = webdriver.Chrome (chromEdrivermerManager ().installer())
conducteur.get ("http: // www.dhtmlgoodies.com / scripts / glisser-drop-nodes / glisser-drop-nodes-demo3.html ")
conducteur.implicitement_wait (1)
conducteur.maximiser_window ()
# Sélectionnez l'image source à la page pour faire glisser
source = pilote.find_element_by_id ("node2")
# Sélectionnez la cible où vous voulez qu'il soit tombé
cible = pilote.find_element_by_xpath ("// * [@ id = 'box1']")
temps.sommeil (5)
# Initialiser lesChains
Action_Chains = ActionChains (conducteur)
# Déplacez la source vers la cible
Action = Action_Chains.click_and_hold (source) \
.move_to_element (cible) \
.libération (cible) \
.Cliquez sur (cible) \
.effectuer()

Le sélénium est un outil très puissant pour faire beaucoup de choses. Dans ce tutoriel, nous avons couvert quelques-unes des choses que le sélénium peut faire; Cependant, une fois que vous vous êtes familiarisé avec cela, vous pouvez créer toutes sortes de robots pour automatiser le navigateur.

Codage heureux!