標籤:任務 ftime 子線程 避免 sel join 對象 自動化測試 使用
python selenium T3
既然要做自動,就得對得起自動化的這個名字。這一章我們將進一步的增加自動化測試的實用,增加
自動發郵件功能、多線程 和定時任務,讓我們的自動化工作真正變得高效而又強大起來。
EG1 :
with open(‘report.html‘ , ‘r‘) as f: msg = MIMEText(f.read() , _subtype=‘html‘ , _charset=‘utf-8‘) msg[‘Subject‘] = Header(subject, ‘utf-8‘) msg[‘date‘] = datetime.now().strftime(‘%Y-%m-%d %H-%M-%S‘) smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(username, password) smtp.sendmail(sender,receiver , msg.as_string()) smtp.quit()
EG2:
每個進程都有自己的地址空間,記憶體,資料棧以及其它記錄其運行軌跡的輔助資料。作業系統管理在其上啟動並執行所有進程,並為這些進程公平地分配時間。
線程(有時被稱為輕量級進程)跟進程有些相似,不同的是,所有的線程運行在同一個進程中,共用
相同的運行環境。我們可以想像成是在主進程或“主線程”中並行啟動並執行“迷你進程”。
在單線程中順序執行兩個迴圈。一定要一個迴圈結束後,另一個才能開始。總時間是各個迴圈
已耗用時間之和
thread 提供了低層級的、原始的
線程以及一個簡單的鎖。threading 基於 Java 的執行緒模式設計。鎖(Lock)和條件變數(Condition)
在 Java 中是對象的基本行為(每一個對象都內建了鎖和條件變數),而在 Python 中則是獨立的對象。
我們應該避免使用 thread 模組,原因是它不支援守護線程。當主線程退出時,所有的子線程不論它
們是否還在工作,都會被強行退出。有時我們並不期望這種行為,這時就引入了守護線程的概念。 threading
模組則支援守護線程。
join()會等到線程結束,或者在給了 timeout 參數的時候,等到逾時為止。join()的另一個比較重
要的方面是它可以完全不用調用。一旦線程啟動後,就會一直運行,直到線程的函數結束,退出為止。
python selenium T3