Как автоматизировать OTP в почте, используя Selen Web Driver 3.0 выше версии - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужна помощь для моего проекта. У меня есть сценарий, в котором я получу один код подтверждения на свой почтовый идентификатор. Я хочу получить этот код подтверждения и использовать его в своем сценарии.

Пожалуйста, дайте мне знать, что кто-нибудь сделал что-то подобное, заранее спасибо

1 Ответ

0 голосов
/ 15 ноября 2018

Да, я сделал это.

После того, как вы отправите OTP из приложения. Вы должны использовать javax.mail и написать код, чтобы прочитать письмо из почтового ящика для указанного emailid. а затем извлеките OTP с помощью подходящего регулярного выражения из содержимого, которое вы получаете.

Сначала добавьте эти зависимости, если вы используете проект Maven, в противном случае вам нужно добавить те же библиотеки в ваш проект

    <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>

Создайте один класс и используйте этот код:

String hostName = "smtp.gmail.com";
String username = "email username"
String password = "email passeord"
int messageCount;
int unreadMsgCount;
String emailSubject;
Message emailMessage;

public MailReader() {
    Properties sysProps = System.getProperties();
    sysProps.setProperty("mail.store.protocol", "imaps");

    try {
        Session session = Session.getInstance(sysProps, null);
        Store store = session.getStore();
        store.connect(hostName, username, password);
        Folder emailInbox = store.getFolder("INBOX");
        emailInbox.open(Folder.READ_WRITE);
        messageCount = emailInbox.getMessageCount();
        System.out.println("Total Message Count: " + messageCount);
        unreadMsgCount = emailInbox.getNewMessageCount();
        System.out.println("Unread Emails count:" + unreadMsgCount);
        emailMessage = emailInbox.getMessage(messageCount);
        emailSubject = emailMessage.getSubject();

        Pattern linkPattern = Pattern.compile("href=\"(.*)\" target"); // here you need to define regex as per you need
        Matcher pageMatcher =
                linkPattern.matcher(emailMessage.getContent().toString());

        while (pageMatcher.find()) {
            System.out.println("Found OTP " + pageMatcher.group(1));
        }
        emailMessage.setFlag(Flags.Flag.SEEN, true);
        emailInbox.close(true);
        store.close();

    } catch (Exception mex) {
        mex.printStackTrace();
    }
}
...