【发布时间】:2022-01-14 22:06:06
【问题描述】:
在我的测试类 (Test.java) 中,我创建了对象变量:loginPage 和 homePage。 在 HomePage 类中,我创建了 Field 对象:emailField,其值为:“something” 如何在 HomePage 类中获取“emailField”值(以及整个对象)?
当我尝试在 getEmailValue() 方法中使用 emailField.getValue() 或 loginPage.emailField 时出现错误:无法解析符号 'emailField'/无法解析符号 '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
【问题讨论】:
-
你可能想找一个关于 Java 的基础教程,并弄清楚继承。
-
您可以为此使用依赖注入,但此时我会重新考虑使用 Page-Object-Model ... 并放弃 @test 注释、“字段”和扩展类. (这些通常与某种框架一起使用) Selenium 是基于时间线的一系列操作,这意味着您可以使用更直接、类似脚本的方法。如果您发现需要重用某些组件,您可以开发类对象、基类和依赖注入,构建适合您需求的架构。