Selenium Webdriver 自动化与电子邮件
本文关键字:电子邮件 自动化 Webdriver Selenium | 更新日期: 2023-09-27 17:57:04
我目前正在尝试使用 Selenium Webdriver (C#) 自动执行"忘记密码 ->重置密码"工作流,其中用户导航到页面并提供其用户名,后端代码验证用户名,然后向与其帐户关联的电子邮件地址发送一封包含重置密码链接的电子邮件。
我能够自动化该过程,直到代码发送电子邮件,但我不知道任何检查电子邮件和/或单击电子邮件中链接的方法,所以我希望对 Selenium/自动化更有经验的人可以给我一些指示。
理想情况下,测试不应关心电子邮件发送到的电子邮件地址。有没有办法让Selenium WebDriver或一些第三方软件包来捕获正在发送的电子邮件?
感谢您的任何意见或建议。
No. 您正在谈论设置电子邮件服务器,这不是一件容易的事。
您应该将其发送到测试工作电子邮件(如果这是针对公司的)或公共电子邮件(hotmail/gmail),或者如果安全性根本不是问题,则最容易发送它的地方是一次性电子邮件(mailinator)
试试PutsBox。您可以向 whatever-you-want@putsbox.com 发送电子邮件,等待几秒钟(SMTP内容不是即时的),然后通过 http://preview.putsbox.com/p/whatever-you-want/last 检查您的电子邮件。
看看这个帖子教程,它可以给你一些想法。
Selenium没有与Thunderbird/Outlook等电子邮件客户端集成。但是,如果您有同一电子邮件客户端的Web界面,则可以从浏览器访问电子邮件,并使用Selenium可以阅读和回复电子邮件。我最近尝试过这个,它在我使用 web Outlook 进行测试的地方工作正常。希望这有帮助。
我遇到了类似的情况,并且能够成功实现一种获取激活或忘记密码链接的方法。
使用Java Mail API,我能够在执行此类操作时触发一种方法,该方法进入文件夹并读取特定的消息行,然后获取链接并使用WebDriver在浏览器中打开它。
然而,这样做的主要缺点是阅读特定文件夹的不一致,有时电子邮件会进入垃圾邮件或其他文件夹(如果是Gmail,则为新的社交文件夹),使其不可见或难以检索。
总的来说,我认为这是一个不应该真正自动化的过程,在测试方面,它应该通过模拟响应来完成更多的代码基础级别。下面的代码片段应该让您了解如何实施
public class RefactoredMail {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getInstance(props, null);
Store store = session.getStore();
store.connect("imap.gmail.com", "username", "password");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message msg = inbox.getMessage(inbox.getMessageCount());
Address[] in = msg.getFrom();
for (Address address : in) {
System.out.println("FROM:" + address.toString());
}
Multipart mp = (Multipart) msg.getContent();
BodyPart bp = mp.getBodyPart(0);
System.out.println("SENT DATE:" + msg.getSentDate());
System.out.println("SUBJECT:" + msg.getSubject());
System.out.println("CONTENT:" + bp.getContent());
System.out.println("Activation Link:" + ((String)
bp.getContent()).startsWith("http"));
String [] line = new String[1];
line [0] = mp.getContentType().toString();
System.out.println("Activation Link:" + (mp.getBodyPart(0).getLineCount()));
System.out.println("Activation Link:" +line[0]);
} catch (Exception e) {
e.printStackTrace();
}
//WebDriver Stuffs
public String activationUrl() {
//getting the url link and making it a global variable .... etc
//Accessing the link
}
}
您可以使用 https://github.com/cmendible/netDumbster 或 http://ndumbster.sourceforge.net/default.html。我用过一个我忘了哪个。这将托管一个 smtp 侦听器,并允许您对它收到的任何电子邮件做出断言。它有点厉害!需要注意的是,您需要能够控制服务器在您正在测试的环境中传递邮件的位置。