Java – Cannot call sendKeys(String) on primitive type void

Cannot call sendKeys(String) on primitive type void… here is a solution to the problem.

Cannot call sendKeys(String) on primitive type void

I’m new to selenium and I’m working with a page factory implementing a data-driven framework, but keep getting the following error:

Cannot invoke sendKeys(String) on the primitive type void

When trying to set up my test script – for the following:

String sEmail = ExcelUtil.getCellData (1,1);

loginpage.setEmail().sendKeys(sEmail);

Here is my java file:

package pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;

public class AmazonLoginPage {

WebDriver driver;

public static void main(String[] args) {

public AmazonLoginPage (WebDriver driver)  {
        this.driver=driver;

}

Using FindBy for locating Elements 
@FindBy(how=How.CSS, using="#ap_email")  WebElement emailTextBox;
@FindBy(how=How.CSS, using="#ap_password")  WebElement passwordTextBox;
@FindBy(how=How.CSS, using="#continue")  WebElement continueButton;
@FindBy(how=How.CSS, using="#signInSubmit")  WebElement signInSubmitButton;

This method is used to set email in the email text box
public void setEmail() {
    emailTextBox.sendKeys();
}
public void setEmail(String strEmail) {
    emailTextBox.sendKeys();

This method is used Continue after entering email
public void clickOnContinueButton() {
    continueButton.click();

}

This method is used to set password in the password text box
public void setPassword (String strPassword) {
    passwordTextBox.sendKeys(strPassword);

}
This method is used to click on the Sign In Button
public void clickOnSignInSubmitButton () {
    signInSubmitButton.click();
}
}

Here is my test script-

package appModules;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;

import pages. AmazonHomePage;
import pages. AmazonLoginPage;
import utility. ExcelUtil;

public class SignIn_Action {

WebDriver driver;

public static void Execute (WebDriver driver) throws Exception {

Get values from Excel sheet, passing parameters to getCellData method
AmazonLoginPage loginpage = PageFactory.initElements(driver, AmazonLoginPage.class);
AmazonHomePage homepage = PageFactory.initElements(driver, AmazonHomePage.class);

homepage.clickOnSignIn();

String sEmail = ExcelUtil.getCellData (1,1);
String sPassword = ExcelUtil.getCellData(1, 2);

loginpage.setEmail().sendKeys(sEmail);

loginpage.clickOnContinueButton();

loginpage.clickOnSignInSubmitButton();            

}
}

Solution

The return type of the setEmail() method is void, so you cannot call sendKeys() on this method.

This should be replaced:

loginpage.setEmail().sendKeys(sEmail);  

with:

loginpage.setEmail(sEmail);  

And your setEmail method should take string parameters like this:

public void setEmail(String email) {
    emailTextBox.sendKeys(email);
}  

Related Problems and Solutions