[当我使用pojo时,我遇到异常了吗?

问题描述 投票:2回答:1

大家好,请检查我的代码

public class Sample1 extends Sample {
        public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver",
                "C:\\Users\\Balaji-PC\\cucumber\\SamplePro\\driver\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.facebook.com/");
        driver.manage().window().maximize();

        Sample s= new Sample1();
        WebElement d = s.getUsername();

        d.sendKeys("lsmanikandan");
        s.getPassword().sendKeys("manikandan");
    }
}

请在我的pojo课下面检查

public class Sample {
    WebDriver driver;
    public Sample() {
        PageFactory.initElements(driver, this);
    }

    @FindBy(id = "email")
    private WebElement username;

    @FindBy(id = "pass")
    private WebElement password;

    public WebElement getUsername() {
        return username;
    }

    public WebElement getPassword() {
        return password;
    }

}

请在下面找到例外

线程“主”中的异常java.lang.NullPointerExceptionorg.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)在org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)在com.sun.proxy。$ Proxy4.sendKeys(未知来源)处org.test.Sample1.main(Sample1.java:18)

selenium nullpointerexception pojo
1个回答
0
投票

代码中的问题是您没有将驱动程序状态从子类Sample 1传递到基类Sample。

魔术在于这三点

  1. 在Child类中添加参数化的构造函数-Sample1

    public Sample1(WebDriver driver){super(driver); }

  2. 在父类中添加参数化的构造函数-示例

    公共样本(WebDriver驱动程序){PageFactory.initElements(driver,this);System.out.println(“页面工厂已启动”);}

  3. 通过传递驱动程序在Parent类中创建到被调用页面工厂的对象。

    Sample s = new Sample1(driver);

    public class Sample {
    WebDriver driver;
    public Sample(WebDriver driver) {
        PageFactory.initElements(driver, this);
        System.out.println("Page Factory started");
    }
    
    @FindBy(id = "email")
    private WebElement username;
    
    @FindBy(id = "pass")
    private WebElement password;
    
    public WebElement getUsername() {
        System.out.println(username.getAttribute("data-testid"));
        return username;
    }
    
    public WebElement getPassword() {
        System.out.println(username.getAttribute("data-testid"));
        return password;
    }  }
    
    public class Sample {
        WebDriver driver;
    public Sample(WebDriver driver) {
        PageFactory.initElements(driver, this);
        System.out.println("Page Factory started");
    }
    
    @FindBy(id = "email")
    private WebElement username;
    
    @FindBy(id = "pass")
    private WebElement password;
    
    public WebElement getUsername() {
        System.out.println(username.getAttribute("data-testid"));
        return username;
    }
    
    public WebElement getPassword() {
        System.out.println(username.getAttribute("data-testid"));
        return password;
    }    }
    

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.