为什么我收到java.lang.NullPointerException

时间:2018-10-28 16:39:37

标签: java selenium selenium-webdriver nullpointerexception

我收到objUserName.sendKeys(uname);的java.lang.NullPointerException;

@FindBy(how=How.XPATH,using="//input[@placeholder='Username']")
static WebElement objUserName;
 public LoginFeature(){
    PageFactory.initElements(config.driver, this);
}

public static String Enterusername(String uname){
    objUserName.sendKeys(uname);
    return uname;
}
public static void main(String[] args ) throws Exception {
    // TODO Auto-generated method stub

    LogF.EnterURL("http://localhost:90/greffa");
    LoginFeature.Enterusername("dummycfo");
    LoginFeature.EnterPwd("passw0rd");
}
}

2 个答案:

答案 0 :(得分:0)

  1. 您需要定义和初始化WebDriver实例。
  2. 此代码:
  

@FindBy(how = How.XPATH,using =“ // input [@ placeholder ='Username']”)静态   WebElement objUserName;公共LoginFeature(){       PageFactory.initElements(config.driver,this); }

最好作为Page对象移到另一个类。

  1. 初始化WebDriver实例后,需要使用驱动程序初始化以前创建的类,因此需要重构此页面对象。

只有这部分代码开始工作。

答案 1 :(得分:0)

PageFactory.initElements注入webelement对象。您还没有调用构造函数方法。该对象未初始化,并且为空对象。

使页面类不是静态的,并初始化该类以调用构造函数方法

public LoginFeature {
  @FindBy(how=How.XPATH,using="//input[@placeholder='Username']")
   WebElement objUserName;
   public LoginFeature(){
      PageFactory.initElements(config.driver, this);
  }

  public String Enterusername(String uname){
      objUserName.sendKeys(uname);
      return uname;
  }
}

public Login {
  public static void main(String[] args ) throws Exception {  
      LogF.EnterURL("http://localhost:90/greffa");
      LoginFeature loginFeature= LoginFeature();
      loginFeature.Enterusername("dummycfo");
      loginFeature.EnterPwd("passw0rd");
  }
}