我们如何在 selenium webdriver java 中从 DB 中获取 OTP

问题描述

我们可以使用 selenium webdriver 自动化 OTP 吗?是否有任何示例代码逻辑可以尝试我们如何从 DB 获取在移动设备中接收到的 OTP 以便进入网站。感谢任何线索。谢谢

解决方法

Selenium 与数据库无关。你需要另一种技术。出于这些目的,请使用 JDBC。见https://www.tutorialspoint.com/jdbc/index.htm

Maven 依赖:

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class OtpManager {

    public static Connection connectSqlDb(String dbName) throws SQLException {
        String serverName = "PC NAME\\SQLEXPRESS";
        return DriverManager.getConnection("jdbc:sqlserver://" + serverName + ";databaseName=" + dbName + ";integratedSecurity=true");
    }
    
    public static String getLastOptForUser(String userName) throws SQLException {
        String otp = null;
        Connection connection = connectSqlDb("MyDatabase");
        Statement statement = connection.createStatement();
        String query = "select top (1) otp from [MyDatabase].[dbo].[OTP] where username = '" + userName + "' order by created desc";
        ResultSet result = statement.executeQuery(query);
        while(result.next()) {
            otp = result.getString("otp");
        }
        return otp;
    }
    
    public static void main(String[] args) throws SQLException {
        String userName = "user1";
        String lastOtp = getLastOptForUser(userName);
        System.out.println(lastOtp);
    }
    
}

或者将 JDBC jar 添加到您的项目中。

假设 DB 位于使用 Windows 身份验证的 SQL Server Express 上,DB 名称为“MyDatabase”,带有 OTP 的名为“OTP”的表如下所示:

table example

使用 JDBC:

2222

输出:

element.sendKeys(String string);

在您的硒测试中,您可以使用 OTP 值:SpecialSender