Selenium Webdriver自动化与电子邮件

时间:2014-04-07 14:56:18

标签: c# email selenium selenium-webdriver

我目前正在尝试使用Selenium Webdriver(C#)自动执行忘记密码 - >重置密码工作流程,用户导航到某个页面并提供其用户名,后端代码验证用户名,然后发送一封电子邮件,其中包含重置密码链接到与其帐户关联的电子邮件地址。

我能够将流程自动化到代码发送电子邮件的位置,但我不知道检查电子邮件和/或点击电子邮件中的链接的任何方法,所以我希望有更多经验丰富的Selenium /自动化可能会给我一些指示。

理想情况下,测试不应该关心电子邮件发送到的电子邮件地址。有没有办法让Selenium WebDriver或某些第三方软件包捕获正在发送的电子邮件?

感谢您提出任何意见或建议。

5 个答案:

答案 0 :(得分:1)

没有。您正在谈论设置电子邮件服务器,这不是一件容易的事。

您应该将其发送到测试工作电子邮件(如果这是针对公司),或公共电子邮件(hotmail / gmail),或者如果安全性根本不是问题,那么发送它的最简单的地方就是一次性电子邮件(mailinator)

答案 1 :(得分:1)

您可以尝试PutsBox。您可以发送电子邮件至whatever-you-want@putsbox.com,等待几秒钟(SMTP内容即时),然后通过http://preview.putsbox.com/p/whatever-you-want/last查看您的电子邮件。

看看这个post tutorial,它可以给你一些想法。

答案 2 :(得分:0)

没有将selenium与Thunderbird / Outlook等电子邮件客户端集成。但是,如果您有相同电子邮件客户端的Web界面,那么您可以从浏览器访问该电子邮件并使用selenium,您可以阅读并回复电子邮件。我最近尝试了这个,它在我使用Web Outlook进行测试的情况下工作正常。 希望这会有所帮助。

答案 3 :(得分:0)

您好我处于类似情况,并且能够成功实施获取激活或忘记密码链接的方法。

使用Java Mail API我能够在执行此类操作时触发一个方法,该方法进入文件夹并读取特定的消息行,然后获取链接并使用WebDriver在浏览器中将其打开。

然而,这样做的主要缺点是阅读特定文件夹的不一致,有时电子邮件会发送到垃圾邮件或其他文件夹(如果是新的社交文件夹),使其无法检索或难以检索。

总的来说,我认为它的流程不应该真正实现自动化。在测试方面,应该通过模拟响应来完成更多的代码库级别。 下面的代码段可以让您了解如何实施

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 
 }  
    }

答案 4 :(得分:0)

您可以使用https://github.com/cmendible/netDumbsterhttp://ndumbster.sourceforge.net/default.html。我用过一个我忘了哪个。这将托管一个smtp监听器,并允许您对收到的任何电子邮件进行断言。真棒!需要注意的是,您需要能够控制服务器在您正在测试的环境中传送邮件的位置。