问题描述
我们可以使用 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”的表如下所示:
使用 JDBC:
2222
输出:
element.sendKeys(String string);
在您的硒测试中,您可以使用 OTP 值:SpecialSender