我正在为网站注册做自动化,但问题是,一旦我进入手机号码,它就会发送OTP。输入otp后,它会要求输入密码,而且我可以进行注册。
一旦我进入手机号码,有没有办法获得OTP代码? 要么 我们可以使用selenium webdriver自动化OTP吗?
答案 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 '效率最高,并且对接收平台的短信没有任何依赖。
以下合并的解决方案:
答案 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代码。