How to automate OTP using selenium web driver?
You may try any one of them:
Solution 1:
Step 1: Connect the Phone/Dongle to the COM Port via USB.
Step 2: Call the code for fetching sms via smslib.jar
Sample Code to fetch sms:
public void sendSMS() throws Exception{
OutboundNotification outboundNotification = new OutboundNotification();
SerialModemGateway gateway = new SerialModemGateway("modem.com5", "COM5", 9600, "ZTE", "COM5");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSmscNumber("+91XXXXXXXXXX"); // 10-digit Mobile Number
Service.getInstance().setOutboundMessageNotification(outboundNotification);
Service.getInstance().addGateway(gateway);
Service.getInstance().startService();
OutboundMessage msg = new OutboundMessage(ExcelConnect.strSMSTo, ExcelConnect.strSMSText);
Service.getInstance().sendMessage(msg);
System.out.println(msg);
System.out.println(ExcelConnect.strSMSTo + "-" + ExcelConnect.strSMSText);
Service.getInstance().stopService();
Service.getInstance().removeGateway(gateway);
}
Step 3: Parse sms to get the OTP from the fetched list by latest received sms
.
Solution 2:
Step 1: Connect the android phone / iphone.
Step 2: Automate the SMS App in either of the phone, if its android - automate SMS app via appium(or any other automating app) or if its iphone - automate its SMS app feature,
to get the SMS and parse it to get the OTP
.
Solution 3:
Step 1: Register for the HTTP SMS Gateway(Most of them provide paid API Call with very few free API Calls for testing).
Step 2: Call the method to fetch SMS.
Step 3: Parse the message(after sorting it by latest received sms) to get the OTP
.
These three ways you can get the OTP and then you can send it to you Web Application.
.
Solution 4:
Get the OTP from DB, if its in-house application or if it can be accessed.
.
'Solution 3 and Solution 4' being most efficient and it doesn't have any dependency on sms receiving platforms.
.
Solutions consolidated below: