email邮件中 内嵌iframe_Python+Selenium执行结果,封装函数,用Python自动发送SMTP邮件...
上文中,介紹了如何用python+selenium自動化測試實戰:郵箱登錄為例驗證了登錄成功的測試用例。那如果我們每次執行的結果都要去代碼中查看,是不是也挺費勁的。應該怎么做呢?如果程序執行報錯或者執行測試用例成功后,發送郵件通知我,咱就不用再打開代碼去查看執行結果了,只需每天關注自己的郵件,執行失敗的部分,進行提bug或者修改代碼就可以了
如何用Python代碼的形式實現自動發送SMTP郵件呢?
一、準備工作
需要進行開啟要進行發件的郵箱的SMTP的授權,并生成授權碼,在發送郵件是輸入的密碼為授權碼,開啟方式如下:
以qq郵箱為例:
設置——》賬戶——》下拉到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務”
——》開啟服務:POP3/SMTP服務 (如何使用 Foxmail 等軟件收發郵件?)——》點擊開啟并生成授權碼(備注:開啟授權需要發短信)。生成后的結果如圖
二、還是同樣的在進行寫代碼之前,首先我們先理一下思路:
1.發送郵件我們需要輸入什么?
(1)標題
(2)內容
(3)誰來發?
(4)發給誰?
2.發送過程有哪些?
(1)建立郵箱連接協議
(2)登錄郵箱,登錄郵箱時需要發送方的授權碼
(3)點擊發送
三、理完思路后,我們如何實現呢?
1.輸入數據
(1)郵件的標題,需要引入import Header 這個模塊,用里面的Header()方法
(2)郵件的內容,需要import MIMEText這個模塊,使用MIMEText()函數,進行內容的數據的構建
(3)誰來發,目前不清楚,但是可以用一個請輸入:from_email=input('請輸入發件人郵箱名:')
(4)發給誰,to_email=input('請輸入接收人郵箱')
2.發送過程:
(1)建立郵箱連接協議:
首先需要引入import smtplib模塊,stmp=smtplib.SMTP(),建立連接:stmp.connect('smtp.qq.com',25)
(2)登錄郵箱,登錄郵箱時需要發送方的授權碼
授權碼:pwd=input('請輸入授權碼:') 登錄:stmp.login(from_email,pwd)(3)點擊發送:stmp.sendmail()
四、以上分析完之后就可以進行代碼實現了
1.首先我先把之前登錄的郵箱登錄這文中的代碼封裝成函數
from selenium import webdriver import time def email_login(url):#封裝登錄函數,url為形參,方便函數的調用driver=webdriver.Chrome()#打開瀏覽器driver.maximize_window()#最大化瀏覽器driver.get(url)# 輸入網址,并發送請求 ,得到頁面顯示driver.find_element_by_id("lbNormal").click()driver.switch_to.frame(driver.find_element_by_xpath("//div/div[3]/div[4]/div/div/iframe"))# driver.find_element_by_name("email").send_keys("自己郵箱的用戶名")driver.find_element_by_name("password").send_keys("自己郵箱的密碼")driver.find_element_by_id("dologin").click()driver.switch_to.default_content()#跳出framedriver.implicitly_wait(5)#智能等待result=driver.find_element_by_class_name("nui-tree-item-text").text#找到收件箱元素并返回文本# print(result)if result=='收件箱':print("本條用例測試通過")real_result="通過"else:print("本條用例執行失敗")real_result = "失敗"time.sleep(5)#driver.quit()#關閉瀏覽器return real_result2.封裝完成后,調用,并編寫發送郵件的內容和執行發送的函數(如圖):
from email.mime.text import MIMEText #說明發送的郵件內容為純文本 from email.header import Header #用于構建郵件的標題 import smtplib #用于發送電子郵件 from public_class import email_public28 #從public_class 包中引入email_public28這個模塊 def create_email_msg():real_result=email_public28.email_login("https://mail.126.com/")#調用email_public28這個模塊中的函數,輸入實際參數msg = MIMEText('執行用例的結果為:'+ real_result, 'plain', 'utf-8')#構建郵件的內容,類型'plain'純文本 ,字符編碼為utf-8msg['Subject']=Header("登錄用例執行結果:",'utf-8')#構建郵件的標題return msg#返回標題和內容 #發送電子郵件 def send_email_msg():from_email=input('請輸入發件人郵箱名:')pwd=input('請輸入授權碼:') #授權碼而非郵箱密碼to_email=input('請輸入接收人郵箱')stmp=smtplib.SMTP() #SMTP郵件發送協議stmp.connect('smtp.qq.com',25)#建立連接stmp.login(from_email,pwd)#登錄郵箱real_result = create_email_msg() #調用郵件的內容的函數stmp.sendmail(from_email,to_email,real_result.as_string()) #發送郵件stmp.quit() #關閉連接print('郵件發送成功') if __name__ == '__main__':send_email_msg()#調用發送郵件的函數總結
以上是生活随笔為你收集整理的email邮件中 内嵌iframe_Python+Selenium执行结果,封装函数,用Python自动发送SMTP邮件...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有特殊步长适应的自适应差分脉码调制语音编
- 下一篇: ubuntu软件的卸载和安装