线程“main”中的异常 java.lang.IllegalArgumentException:要发送的键应该是非空的 CharSequence

问题描述

这是主类:创建了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());

还要检查系统时间是否设置为自动更新