我一直在爲Web應用程序編寫自動化測試,它涉及發送電子郵件,不僅僅是爲了創建帳戶和密碼,而是作爲實際產品的前提,向虛擬機發送電子郵件文檔。使用專用帳戶從電子郵件獲取鏈接
作爲我的測試的一部分,我顯然需要檢查這些電子郵件包含某些元素,例如。鏈接到文檔等
我已經寫了一些python代碼(用於gmail原子提要),只會找到並打印每封電子郵件的標題,如果他們是一個鏈接打印,但也不能找到鏈接。
import urllib2
import untangle
FEED_URL = 'https://mail.google.com/mail/feed/atom'
def get_unread_msgs(user, passwd):
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(
realm='New mail feed',
uri='https://mail.google.com',
user='{user}@gmail.com'.format(user=user),
passwd=passwd
)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
feed = urllib2.urlopen(FEED_URL)
return feed.read()
if __name__ == "__main__":
import getpass
user = raw_input('Username: ')
passwd = getpass.getpass('Password: ')
xml = get_unread_msgs(user, passwd)
o = untangle.parse(xml)
try:
for item in o.feed.entry:
title = item.title.cdata
print title
link = item.link.cdata
if link:
print "Link"
print ' ', link
except IndexError:
pass # no new mail
編輯:我剛剛意識到Atom提要實際上並沒有給出消息數據..
任何人都可以請建議實現我的目標的替代方法?
問題是我需要等到電子郵件到達時,這是自動化測試套件的一小部分。我真的不想做一些可怕的事情,比如做一個inf循環,然後重複代碼直到最終出現一封電子郵件。 關於如何將其應用到我的解決方案的任何想法? – Stormie
你會注意到,這正是每個電子郵件客戶端所做的...... :) –
我不確定我要使用哪個答案,但都很好。我會選擇明確地選擇imap答案,因爲它不是特定的,未來的用戶會發現它是最有幫助的(我希望他們會這樣評論) – Stormie