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.
--Recevoir l'adresse e-mail et le texte de la ligne de commande --Connectez-vous à Excite mail avec du sélénium
--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 ()
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')
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.
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