In my test class (Test.java) I create object variables: loginPage and homePage. In HomePage class I create Field object: emailField with value: "something" How can I get "emailField" value (and the entire object as well) inside HomePage class?
When i try to use emailField.getValue() or loginPage.emailField in getEmailValue() method I get errors: Cannot resolve symbol 'emailField'/Cannot resolve symbol 'loginPage'
Test.java:
public class Test extends GeneralTest {
@Test
public void test() {
LoginPage loginPage = new LoginPage(driver);
HomePage homePage = loginPage.logIn(loginPage);
homePage.getEmailValue();
}
}
HomePage.java:
public class LoginPage{
private Field logInField = new Field(FieldType.INPUT, By.id("test1"));
public Field emailField = new Field(FieldType.INPUT, By.id("test2"));
private WebDriver driver;
public LoginPage(WebDriver driver){
this.driver = driver;
emailField.setValue("something");
getSite("https://apply.commonapp.org/login");
}
public HomePage logIn(Object object){
//some actions
driver.findElement(logInField.getSelector()).click();
return new HomePage(driver);
}
}
HomePage.class:
public class HomePage{
private WebDriver driver;
public HomePage(WebDriver driver){
this.driver = driver;
}
public void getEmailValue(){
// emailField.getValue() -> Cannot resolve symbol 'emailField'
// loginPage.emailField -> Cannot resolve symbol 'loginPage'
}
}a
emailField
is LoginPage
class variable, you can access it via LoginPage
object instance.
For passing objects to some classes the basic way is to set them in constructor. The same you've already done for driver.
public class HomePage{
private WebDriver driver;
private LoginPage loginPage;
public HomePage(WebDriver driver, LoginPage loginPage){
this.driver = driver;
this.loginPage = loginPage;
}
// not sure what this method should do, but if it called get.. by naming conventions it should return something, so I changed it's type to Field and added return. But it's up to you, you may leave void, this is not related to your question.
public Field getEmailValue(){
return loginPage.emailField; // now this will work
}
}
Do not forget to pass LoginPage object instance when instantiate HomePage.
public class LoginPage{
private Field logInField = new Field(FieldType.INPUT, By.id("test1"));
public Field emailField = new Field(FieldType.INPUT, By.id("test2"));
private WebDriver driver;
public LoginPage(WebDriver driver){
this.driver = driver;
emailField.setValue("something");
getSite("https://apply.commonapp.org/login");
}
public HomePage logIn(Object object){
//some actions
driver.findElement(logInField.getSelector()).click();
return new HomePage(driver, this); // this means current class instance
}
}
https://www.w3schools.com/java/java_constructors.asp http://tutorials.jenkov.com/java/constructors.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.