11.11.1 命令行邮件程序 12. 编写一个程序,通过命令行接受电子邮件地址和文本字符串。然后利用selenium 登录到你的邮件账号,将该字符串作为邮件,发送到提供的地址(你也许希望为这 个程序建立一个独立的邮件账号)。 这是为程序添加通知功能的一种好方法。你也可以编写类似的程序,从 Facebook 或Twitter 账号发送消息。 这个项目弄了好几天,头都快炸了,终于弄好了 代码如下: #!/usr/bin/env python #encoding:utf-8 ''' @author:Kevin @contact:kevin-li@yeah.net @file:eMail.py @time:2019/3/1/0001 15:29 @desc: 命令行邮件程序 ''' from selenium import webdriver from selenium.webdriver.common.keys import Keys import time

url='https://www.yeah.net'

browser = webdriver.Chrome() #打开浏览器

browser.get(url)

time.sleep(2) #切换iframe #browser.switch_to.frame('x-URS-iframe') #报错 #上面那条语句中,iframe的切换是默认支持id和name的方法的, #当然实际情况中会遇到没有id属性和name属性为空的情况, #这时候就需要先定位iframe iframe=browser.find_element_by_tag_name("iframe") browser.switch_to.frame(iframe)

#查找email账号填写框 emailElem = browser.find_element_by_name('email') emailElem.send_keys('not-a-real-email-address') # 调用send_keys()方法填写表单

#查找密码填写框 passwordElem = browser.find_element_by_name('password') passwordElem.send_keys('********')

#查找登录按钮 loginElem = browser.find_element_by_id('dologin') loginElem.click() #模拟鼠标点击登录 time.sleep(2) # browser.switch_to.default_content()

#查找写信按钮 writeElem=browser.find_element_by_id('_mail_component_23_23') writeElem.click() #模拟鼠标点击登录 time.sleep(2)

#填写收件人地址 recipientElem=browser.find_element_by_class_name('nui-editableAddr-ipt') recipientElem.send_keys('xxxxxxx@xxx.com')

#填写邮件主题 subjectElem=browser.find_element_by_xpath("//*[@class='nui-ipt-input'and @type = 'text' and @tabindex = '1']") subjectElem.send_keys('Hello!')

#填写邮件内容 mainbodyFrame=browser.find_element_by_xpath("//iframe[contains(@class,'APP-editor-iframe')]") browser.switch_to.frame(mainbodyFrame) mainbodyElem=browser.find_element_by_class_name('nui-scroll') mainbodyElem.send_keys('Hello!\nWorld!') browser.switch_to.default_content()

#点击发送按钮 sendElem=browser.find_elements_by_class_name("nui-btn-text")[2] sendElem.click() time.sleep(5) browser.quit()