Java 如何在没有'的情况下初始化对象;新';PageObject方法中的关键字
有人能描述一下为什么我可以在没有“new”关键字的Steps类中创建Page的新对象吗?我不清楚它到底是如何工作的。我试图从PageObject类中删除继承,但它不起作用并抛出NPE。 以下是我的Page类的一部分:Java 如何在没有'的情况下初始化对象;新';PageObject方法中的关键字,java,selenium,object,inheritance,pageobjects,Java,Selenium,Object,Inheritance,Pageobjects,有人能描述一下为什么我可以在没有“new”关键字的Steps类中创建Page的新对象吗?我不清楚它到底是如何工作的。我试图从PageObject类中删除继承,但它不起作用并抛出NPE。 以下是我的Page类的一部分: public class PrototypePage extends PageObject { private String userName = "//*[@id='x-auto-1-input']"; private String password = "//*[@id='x-
public class PrototypePage extends PageObject {
private String userName = "//*[@id='x-auto-1-input']";
private String password = "//*[@id='x-auto-2-input']";
private String loginButton = "//*[@id='login_btn']";
private String usersDropDown = "//*[@id='x-auto-3-input']";
private String pid = "//*[@id='x-auto-4-input']";
private String pmid = "//*[@id='x-auto-5-input']";
private String fName = "//*[@id='x-auto-6-input']";
private String lName = "//*[@id='x-auto-7-input']";
private String address = "//*[@id='x-auto-8-input']";
private String city = "//*[@id='x-auto-10-input']";
private String state = "//*[@id='x-auto-11-input']";
private String zip = "//*[@id='x-auto-12-input']";
private String email = "//*[@id='x-auto-13-input']";
private String birthday = "//*[@id='x-auto-14-input']";
private String ssn = "//*[@id='x-auto-15-input']";
private String ssoServer = "//*[@id='x-auto-20-input']";
private String ssoRelayState = "//*[@id='x-auto-21-input']";
private String useIframe = "//label[contains(text(), 'Use iFrame:')]/following-sibling::div/div/div/div/div/label[contains(text(), '%s')]";
private String buttonSubmit = "//*[@id='submit_saml_btn']";
public WebElement findElementByXpath(String xpath) {
return getDriver().findElement(By.xpath(xpath));
}
public String getPmid()
{
waitFor(ExpectedConditions.presenceOfElementLocated(By.xpath(pmid)));
return findElementByXpath(pmid).getAttribute("value");
}
这是我的Steps课程:
public class PrototypePageSteps {
PrototypePage prototypePage;
@Step
public void openPrototypePage() {
prototypePage.getDriver().get("https://url.com/");
prototypePage.getDriver().manage().window().maximize();
}
@Step
public void login(String uname, String pass) {
prototypePage.login(uname, pass);
}
@Step
public void selectUserFromDropDown(String user) {
prototypePage.selectUserFromDropDown(user);
}
@Step
public String getPmid() {
return prototypePage.getPmid();
}
实际上,我想知道为什么
PrototypePage PrototypePage代码>对象初始化工作,没有失败。提前感谢。原型页面原型页面代码>不是对象初始化(只是声明)。推测,该包中有设置字段的代码。这就是该字段具有包私有级别访问权限的原因。另请参阅。可能您正在使用依赖项注入框架。你是在用弹簧吗?@GregBurghardt,不,我不用弹簧。这只是一个简单的AT框架。@ElliottFrisch,现在我知道这只是一个声明,但仍然不明白它是如何工作的。您指的是该包中设置字段的哪个代码?如果有一个对象是在您没有显式创建的情况下创建的,那么您就有一个依赖项注入框架。唯一的问题是“在哪里配置?”