Ich lerne Python, um das System zu automatisieren, weil ich keine freie Stelle finden kann, wenn ich nicht 24 Stunden am Tag die Reservierungen für das Skilltraining in der Trainingsschule im Auge habe.
Ich habe den in Übung 11.10.1 des Titelbuchs veröffentlichten Befehlszeilen-E-Mail-Versender erstellt und versucht, ihn zu organisieren.
Diesmal habe ich Excite Mail verwendet, aber der Grund dafür ist, dass Google Mail und Yahoo eine Art mehrstufige Authentifizierung hatten. Es war also Excite Mail, bei der ich mich einfach mit meiner ID und meinem Passwort anmelden konnte.
--Erhalten Sie E-Mail-Adresse und Text von der Befehlszeile
--Verwenden Sie das sys-Modul, um Text an die E-Mail-Adresse sys.argv [2] unter sys.argv [1] zu erhalten. --Öffnen Sie die Anmeldeseite von Excite Mail mit dem Web-Treiber des Selenium-Moduls, senden Sie den Benutzernamen und das Passwort mit sendKeys und melden Sie sich mit submit () an. --Öffnen Sie den Mail-Sendebildschirm über den neu erstellten Link, geben Sie die als Argumente empfangene Mail-Adresse und den empfangenen Text ein und senden Sie ()
CommandlineMailer.py
#! python 3.6.0
# commnadlineMailer.py -Senden Sie Text an die E-Mail-Adresse, die Sie in der Befehlszeile erhalten haben
# Usage:
# commnadlinMailder.py <[email protected]> <sometext> -E-Mail-Adresse als erstes Argument,Erhalten Sie Text mit dem zweiten 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])
#Öffnen Sie Excite Mail und melden Sie sich an
browser = webdriver.Safari()
browser.get('https://ssl2.excite.co.jp/idc/login/?si=mail&ru=http%3A%2F%2Femail.excite.co.jp')
#Ich habe das Namensschild verwendet, weil es kein ID-Tag gab
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()
#Öffnen Sie den neuen Erstellungsbildschirm, nachdem Sie auf die Anzeige der Seite gewartet haben
link_elem = WebDriverWait(browser, 10).until(
EC.element_to_be_clickable((By.LINK_TEXT, 'Erstelle neu'))
)
link_elem.click()
#Nachdem Sie auf die Anzeige der Seite gewartet haben, geben Sie die Mail und den Text ein und senden Sie sie
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('Es gibt nur wenige Argumente')
Zuerst habe ich es implementiert, ohne auf die Anzeige zu warten, und der Fehler kam heraus und ich fühlte mich wie "?". Aber ich bemerkte, dass ein Fehler auftrat, als ich darauf zugegriffen habe, als es nicht angezeigt wurde.
Der Punkt war, WebDriverWait zu verwenden, um die Verarbeitung zu stoppen, "bis ein bestimmtes Element angezeigt wird ≒ bis die Aktualisierung erfolgreich ist". Wenn es nicht innerhalb der von WebDriverWait (Browser, 10) angegebenen 10 Sekunden aktualisiert werden kann, wird ein Timeout-Fehler zurückgegeben.
Da es nur in der Übung verwendet wird, habe ich es unterlassen, zu überprüfen, ob es sich um eine E-Mail-Adresse mit einem regulären Ausdruck handelt, und zu verarbeiten, wenn das Argument umgekehrt wird.
Recommended Posts