Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to automate OTP using selenium web driver?

I am doing automation for registration in a website but the problem is that it sends an OTP once i enter mobile no. after enter otp it will ask for password and than i am able to do registration.

Is there any way to get the OTP code once i enter mobile no ? or Can we automate OTP using selenium webdriver ?

like image 661
NarendraR Avatar asked Mar 16 '16 04:03

NarendraR


People also ask

Can we handle OTP in Selenium?

A token can be either a specially designed device or a gadget that you constantly use. So, to start using OTP passwords, you need to: register on the Protectimus site, select the appropriate token, and get one-time passwords for each authentication.

Can you automate Captcha in Selenium?

How to automate Captcha in Selenium WebDriver? CAPTCHAs can be automated if you are able to decode the image using OCR (Optical Character Recognition). However, to do that, you'll need to write complex algorithms to sort out the image pattern – and writing an algorithm is not that easy.


1 Answers

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:

enter image description here

like image 143
Kumar Avatar answered Sep 22 '22 05:09

Kumar