在POM UI页面工厂中获取java.lang.NullPointerException
我在下面发布了一些到目前为止我已经完成的示例代码,我得到了一个异常在POM UI页面工厂中获取java.lang.NullPointerException,java,selenium,selenium-webdriver,page-factory,Java,Selenium,Selenium Webdriver,Page Factory,我在下面发布了一些到目前为止我已经完成的示例代码,我得到了一个异常java.lang.NullPointerException 基类: public class TestBase { public static WebDriver driver= null; @BeforeSuite public void initialize(){ System.setProperty("webdriver.chrome.driver","...chromedrive
java.lang.NullPointerException
基类:
public class TestBase {
public static WebDriver driver= null;
@BeforeSuite
public void initialize(){
System.setProperty("webdriver.chrome.driver","...chromedriver_win32\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("abcd.com");
}
@AfterSuite
public void TearDownTest()
{
TestBase.driver.quit();
}
}
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver)
{
this.driver= driver;
}
@FindBy(how=How.XPATH, using="//*[@id='email_id']") WebElement EmailTextBox;
@FindBy(how=How.XPATH, using="//*[@id='password']")WebElement PassworTextBox;
@FindBy(how=How.XPATH, using="//*[@id='frm_login']/div[4]/input") WebElement LoginButton;
public void setemail(String strmail)
{
EmailTextBox.sendKeys(strmail);
}
public void setpwd(String strpwd)
{
try
{
PassworTextBox.sendKeys(strpwd);
}
catch (TimeoutException e)
{
System.out.println("Time out exception " + e);
}
catch (ElementNotSelectableException e) {
System.out.println("Element not selectable exception " + e);
} catch (NoSuchElementException e) {
System.out.println("No such element found " + e);
} catch (ElementNotVisibleException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Something Wrong " + e);
}
}
public void ClickLoginBtn()
{
LoginButton.click();
}
}
public class LoginTest extends TestBase{
@Test
public void init()
{
System.out.println("In the init method");
LoginPage lg=PageFactory.initElements(driver, LoginPage.class);
lg.setpwd("123123");
lg.setemail("abc@gmail.com");
lg.ClickLoginBtn();
}
}
登录页面:
public class TestBase {
public static WebDriver driver= null;
@BeforeSuite
public void initialize(){
System.setProperty("webdriver.chrome.driver","...chromedriver_win32\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("abcd.com");
}
@AfterSuite
public void TearDownTest()
{
TestBase.driver.quit();
}
}
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver)
{
this.driver= driver;
}
@FindBy(how=How.XPATH, using="//*[@id='email_id']") WebElement EmailTextBox;
@FindBy(how=How.XPATH, using="//*[@id='password']")WebElement PassworTextBox;
@FindBy(how=How.XPATH, using="//*[@id='frm_login']/div[4]/input") WebElement LoginButton;
public void setemail(String strmail)
{
EmailTextBox.sendKeys(strmail);
}
public void setpwd(String strpwd)
{
try
{
PassworTextBox.sendKeys(strpwd);
}
catch (TimeoutException e)
{
System.out.println("Time out exception " + e);
}
catch (ElementNotSelectableException e) {
System.out.println("Element not selectable exception " + e);
} catch (NoSuchElementException e) {
System.out.println("No such element found " + e);
} catch (ElementNotVisibleException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Something Wrong " + e);
}
}
public void ClickLoginBtn()
{
LoginButton.click();
}
}
public class LoginTest extends TestBase{
@Test
public void init()
{
System.out.println("In the init method");
LoginPage lg=PageFactory.initElements(driver, LoginPage.class);
lg.setpwd("123123");
lg.setemail("abc@gmail.com");
lg.ClickLoginBtn();
}
}
LoginTest类:
public class TestBase {
public static WebDriver driver= null;
@BeforeSuite
public void initialize(){
System.setProperty("webdriver.chrome.driver","...chromedriver_win32\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("abcd.com");
}
@AfterSuite
public void TearDownTest()
{
TestBase.driver.quit();
}
}
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver)
{
this.driver= driver;
}
@FindBy(how=How.XPATH, using="//*[@id='email_id']") WebElement EmailTextBox;
@FindBy(how=How.XPATH, using="//*[@id='password']")WebElement PassworTextBox;
@FindBy(how=How.XPATH, using="//*[@id='frm_login']/div[4]/input") WebElement LoginButton;
public void setemail(String strmail)
{
EmailTextBox.sendKeys(strmail);
}
public void setpwd(String strpwd)
{
try
{
PassworTextBox.sendKeys(strpwd);
}
catch (TimeoutException e)
{
System.out.println("Time out exception " + e);
}
catch (ElementNotSelectableException e) {
System.out.println("Element not selectable exception " + e);
} catch (NoSuchElementException e) {
System.out.println("No such element found " + e);
} catch (ElementNotVisibleException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Something Wrong " + e);
}
}
public void ClickLoginBtn()
{
LoginButton.click();
}
}
public class LoginTest extends TestBase{
@Test
public void init()
{
System.out.println("In the init method");
LoginPage lg=PageFactory.initElements(driver, LoginPage.class);
lg.setpwd("123123");
lg.setemail("abc@gmail.com");
lg.ClickLoginBtn();
}
}
在设置用户名和密码时,我得到了NullPointerException
。你能帮帮我吗
我不熟悉PageFactory的POM,所以我不知道如何解决它,但如果有人能帮我解决这个问题,那将对我大有帮助。尝试在
driver.get(“abcd.com”)之后添加一个超时代码>确保页面已完成加载,并且可以找到定义EmailTextBox和PassworTextBox的WebElements。
或者像这样使用WebDriverWait
new WebDriverWait(driver, 10))
.until(ExpectedConditions.visibilityOf(By.id("someid")));
您不应该初始化WebDriver实例,即驱动程序
两次,如下所示:
public static WebDriver driver= null;
及
将《全球宣言》保持为:
public static WebDriver driver= null;
并将线路更改为:
driver=new ChromeDriver();
我希望您已经像这样初始化了页面工厂元素
public LoginPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
在你的测试课上,
我会把它放在
LoginPage lg=新的LoginPage(驱动程序)
显式等待不会修复NullPointerException如果问题是由于页面中缺少未定义元素的id而导致的,则可能会发生be@Ehcnalb不,这将抛出NoTouchElementException
<如果未使用PageFactory
类的initElements
方法,可能会引发code>NullPointerException