当我使用 pojo 时,出现异常?
when i am using pojo, i am getting exception?
大家好,请检查我的代码
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 class
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;
}
}
请在下面找到例外情况
Exception in thread "main" java.lang.NullPointerException at
org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
at
org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
at com.sun.proxy.$Proxy4.sendKeys(Unknown Source) at
org.test.Sample1.main(Sample1.java:18)
您的代码中的问题是您没有将 driver 状态从 child class 示例 1 传递到基础 class 示例。
神奇就在这三点
在 Child class - Sample1
中添加参数化构造函数
public Sample1(WebDriver driver) { super(driver); }
在 Parent Class - 示例中添加参数化构造函数
public 示例(WebDriver driver){
PageFactory.initElements(driver, 这个);
System.out.println("Page Factory started");
}
通过传递 driver.
创建 object 以在 Parent class 中调用页面工厂
样本 s = 新样本 1(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;
} }
大家好,请检查我的代码
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 class
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;
}
}
请在下面找到例外情况
Exception in thread "main" java.lang.NullPointerException at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69) at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38) at com.sun.proxy.$Proxy4.sendKeys(Unknown Source) at org.test.Sample1.main(Sample1.java:18)
您的代码中的问题是您没有将 driver 状态从 child class 示例 1 传递到基础 class 示例。
神奇就在这三点
在 Child class - Sample1
中添加参数化构造函数public Sample1(WebDriver driver) { super(driver); }
在 Parent Class - 示例中添加参数化构造函数
public 示例(WebDriver driver){ PageFactory.initElements(driver, 这个); System.out.println("Page Factory started"); }
通过传递 driver.
创建 object 以在 Parent class 中调用页面工厂样本 s = 新样本 1(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; } }