我实现的解决方案是使用 mailcatcher API,如果你向下滚动一点,你会发现关于 API 的以下内容:
一个相当 RESTful 的 URL 模式意味着您可以从 /messages 下载 JSON 格式的消息列表,每个消息的元数据使用 /messages/:id.json,然后相关部分使用 /messages/:id.html 和 /messages/:id .plain 用于默认 HTML 和纯文本版本,/messages/:id/:cid 用于按 CID 的单个附件,或带有 /messages/:id.source 的整个消息。
所以我们首先获取整个 json 响应,解析它并获取最新的电子邮件 ID:
// Returns the last email id
function(emails, user) {
var email, recipient;
for(var i = emails.length - 1; i >= 0; i--) {
email = emails[i];
for(var j = 0; j < email.recipients.length ; j++) {
recipient = email.recipients[j];
if(recipient == "<"+user+">") {
return email.id;
}
}
}
};
使用该电子邮件 ID,我们可以通过点击获取电子邮件的正文/messages/:id.plain
(当然还有更多变体,例如获取电子邮件源代码或电子邮件呈现的 html,我们只需要消息)然后我们可以解析正文以获取我们想要的内容,以下是代码:
browser.driver.get(mailcatcherUrl+"/messages");
browser.driver.findElement(by.tagName('body')).getText().then(function(response) {
var emails, lastEmailId, partialTokens ;
emails = JSON.parse(response);
lastEmailId = getLastEmailId(emails, user);
browser.driver.get(mailcatcherUrl+"/messages/"+lastEmailId+".plain");
browser.driver.findElement(by.tagName('body')).getText().then(function(lastEmail) {
// use latestEmail to get what you want.
});
});
干杯!