Java WebDriver-使用selenium检查忘记密码功能
我正在使用SeleniumWebDriver+Java检查忘记密码功能。 以下步骤如下: 1] 点击忘记密码链接 2] 输入电子邮件id以恢复帐户: 3] 输入有效的电子邮件id后,OTP发送到电子邮件id: 到现在为止,它工作得很好 但现在我需要在文本字段中输入OTP: 是否有可能将此场景自动化 如果可能,请提出解决方案Java WebDriver-使用selenium检查忘记密码功能,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在使用SeleniumWebDriver+Java检查忘记密码功能。 以下步骤如下: 1] 点击忘记密码链接 2] 输入电子邮件id以恢复帐户: 3] 输入有效的电子邮件id后,OTP发送到电子邮件id: 到现在为止,它工作得很好 但现在我需要在文本字段中输入OTP: 是否有可能将此场景自动化 如果可能,请提出解决方案 提前感谢:)您需要OTP才能继续,因此不能跳过此部分。这是你可以尝试的 转到电子邮件服务提供商 登录 检查包含OTP的电子邮件 拿到检察官办公室 使用文本字段中的OTP
提前感谢:)您需要OTP才能继续,因此不能跳过此部分。这是你可以尝试的
我建议的另一种方式 如果这是您的内部开发,那么
javax.mail
库的帮助下阅读电子邮件,并通过一些正则表达式匹配从电子邮件中提取OTP代码package com.tkt.utils;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
public class ReadEmail
{
static String hostName ="imap.1and1.com";
static String username = "";
static String password = "";
static int messageCount;
public static String url=null;
public static String userid = null;
public static String pass=null;
//public static void showEmail()
public static void main(String ar[])
{
Properties sysProps = System.getProperties();
sysProps.setProperty("mail.store.protocol", "imap");
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);
int unreadMsgCount = emailInbox.getNewMessageCount();
System.out.println("Unread Emails count:"+unreadMsgCount);
Message emailMessage = emailInbox.getMessage(messageCount);
System.out.println("Email Subject: " + emailMessage.getSubject());
Multipart multipart = (Multipart) emailMessage.getContent();
BodyPart part = multipart.getBodyPart(0);
String responseMessage = part.getContent().toString();
System.out.println("================"+responseMessage);
// Get Email ID
Pattern p = Pattern.compile("EmailId: (.+)");
Matcher m = p.matcher(responseMessage);
if (m.find()) {
userid = m.group(1);
}
System.out.println(userid);
/*Get URL*/
Pattern p2 = Pattern.compile("http(.+)");
Matcher m2 = p2.matcher(responseMessage);
if (m2.find()) {
url = m2.group();
}
System.out.println("URL :="+ url);
/*Get password from email*/
Pattern p1 = Pattern.compile("Password: (.*)");
Matcher m1 = p1.matcher(responseMessage);
if (m1.find()) {
pass = m1.group(1);
}
System.out.println(pass);
/*System.out.println("Email Content: " + emailMessage.getContent().toString());
Pattern p = Pattern.compile("<td>Password:<.*?td>([^<]+)<td>(.+)<.*?td>");
Matcher m = p.matcher(responseMessage);
if (m.find()) {
password1 = m.group(1); // this variable should contain the link URL
}*/
emailMessage.setFlag(Flags.Flag.SEEN, true);
emailInbox.close(true);
store.close();
}
catch (Exception mex)
{
mex.printStackTrace();
}
//return new ReadEmail();
}
}
package com.tkt.utils;
导入java.util.Properties;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
导入javax.mail.BodyPart;
导入javax.mail.Flags;
导入javax.mail.Folder;
导入javax.mail.Message;
导入javax.mail.Multipart;
导入javax.mail.Session;
导入javax.mail.Store;
公共类ReadEmail
{
静态字符串hostName=“imap.1和1.com”;
静态字符串username=“”;
静态字符串密码=”;
静态int-messageCount;
公共静态字符串url=null;
公共静态字符串userid=null;
公共静态字符串pass=null;
//公共静态void showmail()
公共静态void main(字符串ar[]
{
Properties sysProps=System.getProperties();
setProperty(“mail.store.protocol”、“imap”);
尝试
{
Session Session=Session.getInstance(sysProps,null);
Store Store=session.getStore();
store.connect(主机名、用户名、密码);
文件夹emailInbox=store.getFolder(“收件箱”);
电子邮件收件箱。打开(文件夹。读写);
messageCount=emailInbox.getMessageCount();
System.out.println(“消息总数:“+messageCount”);
int unreadMsgCount=emailInbox.getNewMessageCount();
System.out.println(“未读邮件计数:+unreadMsgCount”);
Message emailMessage=emailInbox.getMessage(messageCount);
System.out.println(“电子邮件主题:+emailMessage.getSubject());
Multipart Multipart=(Multipart)emailMessage.getContent();
BodyPart=multipart.getBodyPart(0);
字符串响应消息=part.getContent().toString();
System.out.println(“=========================”+响应消息);
//获取电子邮件ID
Pattern p=Pattern.compile(“EmailId:(.+)”);
匹配器m=p.Matcher(响应消息);
if(m.find()){
userid=m.group(1);
}
System.out.println(userid);
/*获取URL*/
patternp2=Pattern.compile(“http(+)”);
匹配器m2=p2.匹配器(响应消息);
if(m2.find()){
url=m2.group();
}
System.out.println(“URL:=”+URL);
/*从电子邮件获取密码*/
模式p1=Pattern.compile(“密码:(.*);
匹配器m1=p1.匹配器(响应消息);
if(m1.find()){
通过=m1。组(1);
}
系统输出打印项次(通过);
/*System.out.println(“电子邮件内容:+emailMessage.getContent().toString());
Pattern p=Pattern.compile(“密码:([^不,您不能。您需要OTP才能继续。您最好的尝试是自动登录电子邮件服务提供商,并从那里获取OTP电子邮件。@Shaswat感谢您的帮助。将尝试此解决方案。谢谢Narendra。这是一个很好的解决方案。我期待与它合作。