尝试在 webDriver 中使用 @FindBy 时获取 java.lang.NullPointerException
Getting java.lang.NullPointerException when trying to use @FindBy in webDriver
当我尝试使用@FindBy 注释在网页上查找元素时,我得到 java.lang.NullPointerException。
我的代码 -
public class pageObject{
WebDriver driver;
@FindBy(id = "email")
WebElement searchBox;
@FindBy(id = "u_0_v")
WebElement submit;
void pageObject(String web){
FirefoxProfile profile = new FirefoxProfile();
profile.setAssumeUntrustedCertificateIssuer(false);
profile.setAcceptUntrustedCertificates(false);
this.driver = new FirefoxDriver(profile);
this.driver.get(web);
this.driver.manage().window().maximize();
this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
searchBox.click();
searchBox.sendKeys("er");
submit.click();
}
public static void main(String[] args){
new pageObject("https://www.facebook.com/?_rdr=p");
}
}
上面的代码出现异常 -
异常 -
Exception in thread "main" java.lang.NullPointerException
at com.Selenium_Practice.pageObject.<init>(pageObject.java:29)
at com.Selenium_Practice.pageObject.main(pageObject.java:35)
我也试过用
@FindBy(how = HOW.ID , using = "email") and @FindBy(how = HOW.ID , using = "u_0_v")
但再次得到相同的空指针异常
如果您使用 Selenium 的 PageFactory 并且希望您的 class 是自包含的*
,则首先需要初始化您的元素
pageObject(String web){
FirefoxProfile profile = new FirefoxProfile();
profile.setAssumeUntrustedCertificateIssuer(false);
profile.setAcceptUntrustedCertificates(false);
this.driver = new FirefoxDriver(profile);
// You need to put this line in your constructor
PageFactory.initElements(this.driver, this);
// Then follows the rest of your constructor
...
}
* 意思是,你也可以在 class 之外初始化这个 classes 元素,但我想你想在里面做。
当我尝试使用@FindBy 注释在网页上查找元素时,我得到 java.lang.NullPointerException。
我的代码 -
public class pageObject{
WebDriver driver;
@FindBy(id = "email")
WebElement searchBox;
@FindBy(id = "u_0_v")
WebElement submit;
void pageObject(String web){
FirefoxProfile profile = new FirefoxProfile();
profile.setAssumeUntrustedCertificateIssuer(false);
profile.setAcceptUntrustedCertificates(false);
this.driver = new FirefoxDriver(profile);
this.driver.get(web);
this.driver.manage().window().maximize();
this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
searchBox.click();
searchBox.sendKeys("er");
submit.click();
}
public static void main(String[] args){
new pageObject("https://www.facebook.com/?_rdr=p");
}
}
上面的代码出现异常 -
异常 -
Exception in thread "main" java.lang.NullPointerException
at com.Selenium_Practice.pageObject.<init>(pageObject.java:29)
at com.Selenium_Practice.pageObject.main(pageObject.java:35)
我也试过用
@FindBy(how = HOW.ID , using = "email") and @FindBy(how = HOW.ID , using = "u_0_v")
但再次得到相同的空指针异常
如果您使用 Selenium 的 PageFactory 并且希望您的 class 是自包含的*
,则首先需要初始化您的元素pageObject(String web){
FirefoxProfile profile = new FirefoxProfile();
profile.setAssumeUntrustedCertificateIssuer(false);
profile.setAcceptUntrustedCertificates(false);
this.driver = new FirefoxDriver(profile);
// You need to put this line in your constructor
PageFactory.initElements(this.driver, this);
// Then follows the rest of your constructor
...
}
* 意思是,你也可以在 class 之外初始化这个 classes 元素,但我想你想在里面做。