如何使用selenium web驱动程序自动化OTP?

时间:2016-03-16 04:39:03

标签: selenium selenium-webdriver

我正在为网站注册做自动化,但问题是,一旦我进入手机号码,它就会发送OTP。输入otp后,它会要求输入密码,而且我可以进行注册。

一旦我进入手机号码,有没有办法获得OTP代码?  要么 我们可以使用selenium webdriver自动化OTP吗?

3 个答案:

答案 0 :(得分:6)

您可以尝试其中任何一个:

解决方案1:

步骤1:通过USB将电话/加密狗连接到COM端口。

步骤2:通过smslib.jar

调用用于获取短信的代码

获取短信的示例代码:

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

步骤3:解析短信以通过最新收到的短信从获取的列表中获取 OTP

解决方案2:

步骤1:连接android手机/ iphone。

步骤2:在手机中的任一个中自动化SMS应用程序,如果它的android - 通过appium(或任何其他自动化应用程序)自动化SMS应用程序,或者如果它的iphone - 自动化其SMS应用程序功能,

获取SMS并解析它以获取OTP

解决方案3:

步骤1:注册HTTP SMS网关(其中大多数提供付费API调用极少数免费API 呼叫进行测试)。

第2步:调用方法获取短信。

步骤3:解析消息(在按最新收到的短信排序后)以获取OTP

这三种方式可以获得OTP,然后您可以将其发送给Web应用程序。

解决方案4:

从DB获取OTP,如果是内部应用程序,或者是否可以访问它。

'解决方案3和解决方案4 '效率最高,并且对接收平台的短信没有任何依赖。

以下合并的解决方案:

enter image description here

答案 1 :(得分:0)

String userProfile= "C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\";
        System.setProperty("webdriver.chrome.driver","C:\\Users\\user\\Desktop\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--user-data-dir="+userProfile);
        options.addArguments("--profile-directory=Default");
        options.addArguments("--start-maximized");
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://mail.google.com/mail/u/0/#inbox");

以上代码可以很好地实现OTP验证站点的自动化。只需创建一次受信任的本地chrome,并使用上述代码调用同一浏览器进行测试即可。.它非常酷:)

答案 2 :(得分:-2)

如果'OTP'代码存储在db中,则很容易自动化。你可以使用sql连接并获取otp代码。