"Laissez Python faire les choses ennuyeuses" Exercice ~ Command Line Mailer ~

J'étudie le python pour automatiser le système car je ne trouve pas de poste à moins que je garde un œil sur les réservations de formation professionnelle à l'école de formation 24 heures sur 24.

J'ai créé le courrier électronique en ligne de commande qui est sorti dans l'exercice 11.10.1 du livre de titre, alors j'ai essayé de l'organiser.

J'ai utilisé le courrier Excite cette fois, mais la raison en est que Gmail et Yahoo avaient une sorte d'authentification en plusieurs étapes, donc c'était Excite mail que je pouvais facilement me connecter avec juste mon identifiant et mon mot de passe.

environnement

politique

--Recevoir l'adresse e-mail et le texte de la ligne de commande --Connectez-vous à Excite mail avec du sélénium

Politique du programme

--Utilisez le module sys pour recevoir du texte à l'adresse e-mail sys.argv [2] à sys.argv [1]. --Ouvrez la page de connexion d'Excite mail avec le webdriver du module selenium, envoyez le nom d'utilisateur et le mot de passe avec sendKeys, et connectez-vous avec submit (). --Ouvrez l'écran d'envoi des e-mails à partir du lien nouvellement créé, entrez l'adresse e-mail et le texte reçu comme arguments, puis soumettez ()

la mise en oeuvre

CommandlineMailer.py


#! python 3.6.0
# commnadlineMailer.py -Envoyez du texte à l'adresse e-mail que vous avez reçue sur la ligne de commande
# Usage:
# commnadlinMailder.py <[email protected]> <sometext> -Adresse e-mail comme premier argument,Recevoir du texte avec un deuxième argument

import sys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

if len(sys.argv) > 2:
    email_adress = str(sys.argv[1])
    main_text = str(sys.argv[2])

    #Ouvrez Excite Mail et connectez-vous
    browser = webdriver.Safari()
    browser.get('https://ssl2.excite.co.jp/idc/login/?si=mail&ru=http%3A%2F%2Femail.excite.co.jp')
    #J'ai utilisé le badge car il n'y avait pas de tag d'identification
    email_elem = browser.find_element_by_name('loginid') 
    email_elem.send_keys('[email protected]')

    password_elem = browser.find_element_by_id('id-password')
    password_elem.send_keys('yourPassword')
    password_elem.submit()

    #Après avoir attendu l'affichage de la page, ouvrez le nouvel écran de création
    link_elem = WebDriverWait(browser, 10).until(
        EC.element_to_be_clickable((By.LINK_TEXT, 'Créer un nouveau'))
    )
    link_elem.click()

    #Après avoir attendu l'affichage de la page, saisissez le mail et le corps et envoyez
    to_elem = WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.ID, 'to'))
    )
    to_elem.send_keys(email_adress)

    main_text_elem = browser.find_element_by_id('body')
    main_text_elem.send_keys(main_text)

    send_elem = browser.find_element_by_id('_sendmail')
    send_elem.submit()
else:
    print('Il y a peu d'arguments')

Le point qui a été pris

Au début, je l'implémentais sans attendre l'affichage, et l'erreur est apparue et je me suis sentie comme "?", Mais j'ai remarqué qu'une erreur s'est produite lorsque j'y ai accédé alors qu'elle n'était pas affichée.

Le but était d'utiliser WebDriverWait pour arrêter le traitement "jusqu'à ce qu'un élément spécifique apparaisse ≒ jusqu'à ce que la mise à jour réussisse". S'il ne peut pas être mis à jour dans les 10 secondes spécifiées par WebDriverWait (navigateur, 10), une erreur de délai d'expiration sera renvoyée.

Le point que j'ai coupé les coins

Puisqu'il n'est utilisé que dans l'exercice, j'ai omis de vérifier s'il s'agit d'une adresse e-mail avec une expression régulière et de traiter lorsque l'argument est inversé.

Recommended Posts

"Laissez Python faire les choses ennuyeuses" Exercice ~ Command Line Mailer ~
Recevez le formulaire en Python et faites diverses choses
[Version 2020] Laissez Python faire tous les calculs de taxes et de recettes
python Remarque: déterminez si l'argument de ligne de commande est dans la liste
MoneyForward Cloud automatise l'horodatage [Laissez Python faire le problème]
Module standard Python utilisable en ligne de commande
Traitement des arguments de ligne de commande (docopt Python)
Essayez le SDK Python LINE Pay
Dans la commande python, python pointe vers python3.8
Commande pour le répertoire courant Python
Continuez à recevoir RSS sur la ligne de commande
Laissez Heroku faire le traitement en arrière-plan avec Python
[Python] Résumez les éléments rudimentaires du multithreading
Lisez le fichier ligne par ligne avec Python
Décomposer les arguments de commande en une seule ligne en Python
Vous recherchez commandlinefu sur la ligne de commande
[Python] Lire la ligne spécifiée dans le fichier
Mémo de correspondance lorsque la touche de direction ne peut pas être utilisée dans la ligne de commande python