Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java sendkeys Error keys should be a string

I'm getting an error when trying to pass in a username and password to a form field using sendKeys. Below is my User Class followed by my test class. Does anyone know why the application is not passing a string?

org.openqa.selenium.WebDriverException: unknown error: keys should be a string

public class User {
    public static String username;
    public static String password;


    public User() {
        this.username = "username";
        this.password = "password";
    }

    public String getUsername(){
        return username;
    }

    public String getPassword(){
        return password;
    }

}

@Test
public void starWebDriver()  {
    driver.get(domainURL.getURL());
    WebElement userInputBox, passInputBox;
    userInputBox = driver.findElement(By.xpath("//input[@name='email']"));
    passInputBox = driver.findElement(By.xpath("//input[@name='password']"));
    System.out.println("before sending keys");
    userInputBox.sendKeys(User.username);
}
like image 448
adom Avatar asked Jan 13 '23 17:01

adom


1 Answers

You're accessing static properties that are never initialized (null) because the constructor is never called.

You can either set the static properties directly or take out the static context and initialize a User in your test.

Ex.

public class User {
    public String username;
    public String password;


    public User() {
        this.username = "username";
        this.password = "password";
    }

    public String getUsername(){
        return username;
    }

    public String getPassword(){
        return password;
    }

}


@Test
public void starWebDriver()  {
    User user = new User();

    driver.get(domainURL.getURL());
    ...
    userInputBox.sendKeys(user.username);
}
like image 142
John Avatar answered Jan 18 '23 06:01

John