Не удается вызвать sendKeys (String) для примитивного типа void

Я новичок в селене, и я реализую фреймворк, управляемый данными, с использованием фабрики страниц и продолжаю получать следующую ошибку:

Не удается вызвать sendKeys (String) для примитивного типа void

при попытке установить мой тестовый скрипт для следующего:

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

loginpage.setEmail().sendKeys(sEmail);

Вот мой java-файл:

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();
}
}

Вот мой тестовый скрипт-

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();            

    }
}

person nchll    schedule 06.08.2018    source источник


Ответы (1)


Тип возвращаемого значения метода setEmail()void, поэтому вы не можете вызывать sendKeys() для этого метода.

Это следует заменить:

loginpage.setEmail().sendKeys(sEmail);  

С :

loginpage.setEmail(sEmail);  

и ваш метод setEmail должен принимать такой строковый аргумент:

public void setEmail(String email) {
    emailTextBox.sendKeys(email);
}  
person cruisepandey    schedule 06.08.2018
comment
Проголосовал. Я также предлагаю выполнить emailTextBox.clear(); перед sendKeys - person Bill Hileman; 06.08.2018
comment
@BillHileman: Спасибо. да, я рассмотрю clear как хорошее предложение. Я не знаю, почему OP не отвечает, когда они только что получили решение. Мы хотим помочь, и взамен, если решение окажется полезным, вы должны быть готовы проголосовать и принять его. - person cruisepandey; 06.08.2018
comment
На мой взгляд, это одна из самых неприятных вещей в SO - заброшенные вопросы. Вот почему я стараюсь голосовать за полезные ответы, когда могу. - person Bill Hileman; 06.08.2018
comment
@cruisdepandey- извините, мы должны быть в разных часовых поясах- я попробую сегодня и дам вам знать, как это работает! - person nchll; 06.08.2018
comment
Без проблем. Дайте нам знать, если это было полезно или требуется какая-то модификация в ответ. - person cruisepandey; 06.08.2018
comment
@cruisdepandey- я только что попробовал, и это сработало ... спасибо ... это всегда так просто :) извините за задержку ответа- - person nchll; 06.08.2018