问题描述
这是主类:创建了2个类,一个是主类,另一个是“TotpGenerator”类。其他类编写的token代码,在主类中调用。
我可以在登录令牌文本字段出现后登录网站,根据此代码,他们的令牌不是从“密钥”中获取的。任何人都可以帮助我。
问题是:未使用密钥获取身份验证器令牌:
RoomHistory
在另一个像这样创建的类中:并在主类中“调用”,得到以下错误。
package Testing;
import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.jboss.aerogear.security.otp.Totp;
public class Testing {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver","C:\\Users\\naga\\eclipse-workspace\\Testing\\drivers\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
driver.get("https:aasdsad.com");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[@id=\"center-v-and-h\"]/form/div/input")).sendKeys("abc@gmail.com");
driver.findElement(By.xpath("//*[@id=\"center-v-and-h\"]/form/div/input")).sendKeys("asasasa");
driver.findElement(By.xpath("//*[@id=\"center-v-and-h\"]/form/div/div/button")).click();
driver.findElement(By.name("token")).sendKeys(TOTPGenerator.getTwoFactorCode());
}
}
出现错误:
package Testing;
import java.util.concurrent.TimeUnit;
import org.jboss.aerogear.security.otp.Totp;
public class TOTPGenerator {
// Todo Auto-generated method stub
public static String getTwoFactorCode() {
Totp totp = new Totp("qwwqeqweqwZWO5UXSSLUFQUVMVSWOI"); // 2FA secret key
String twoFactorCode = totp.Now(); //Generated 2FA code here
return twoFactorCode;
}
}
解决方法
是的,TOTPGenerator.getTwoFactorCode() 的输出为空,这就是我们收到此错误的原因。
可以试试下面的代码导入包 import org.jboss.aerogear.security.otp.api.Clock;
Totp totp = new Totp("qwwqeqweqwZWO5UXSSLUFQUVMVSWOI",new Clock());
还要检查系统时间是否设置为自动更新