java - 我已经创建了 chrome 驱动程序对象,然后我得到了 java.lang.NullPointerException

标签 java selenium testng

我正在学习 TestNG,所以我创建了一个基类,其中我为 chrome 浏览器创建了对象。

这是我的基类

public class BaseClass {

    public String url="https://dofdev-services.azurewebsites.net/";
    public String username1="info@gravityconsulting.com.au";
    public String password1="Gravity@123";
    public  WebDriver driver;

    @BeforeClass
    public void setUp() 
    {
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir" +"/Drivers/chromedriver.exe"));
        driver=new ChromeDriver();
    }

    @AfterClass()
    public void tearDown() 
    {
        driver.quit();
    }
}

这是我的测试用例类

public class TC_LoginPage_001 extends BaseClass{

      @Test
      public  void loginTestCase()
      {
    driver.get(url);
    LoginPagePOM lp=new LoginPagePOM(driver);
    lp.setUserName(username1);
    lp.setPassword(password1);
    lp.clickSignIn();

    if(driver.getTitle().equalsIgnoreCase(""))
    {

        Assert.assertTrue(true);
    }else {
        Assert.assertTrue(false);
    }
}

这是我的另一个类,我在这里创建了构造函数(pom 类)

 public class LoginPagePOM {

 WebDriver driver;

 public LoginPagePOM(WebDriver driver)
  {
    this.driver=driver;
    PageFactory.initElements(driver, this);
      }
    @FindBy(id="userName")
    WebElement username;

    @FindBy(name ="passwords")
     WebElement password;

    @FindBy(name="btn-sdz-login")
     WebElement click;


    public void setUserName(String usname)
          {
      username.sendKeys(usname);
               }

   public void setPassword(String Pass) 
             {
         password.sendKeys(Pass);
     }

     public void clickSignIn()
       {
       click.click();
       }
               }    

这是异常堆栈跟踪(获取空指针异常)

exception stack trace

最佳答案

确保您的构造函数在登录页面中传递了驱动程序对象。您需要将驱动程序传递给所有页面类。此外,登录页面没有扩展基类。您需要按如下方式进行扩展,并删除登录页面中的 Webdriver 实例。

例如:

 public class LoginPagePOM extends BaseClass {
    public LoginPagePOM (WebDriver driver) 
        {
            this.driver=driver;

        }

    public void setUserName(){
     ........
     }

    public void setPassword(){
      ........
     }

}

关于java - 我已经创建了 chrome 驱动程序对象,然后我得到了 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60612651/

相关文章:

python selenium 如何复制文本?

java - 使用@FindBy和By的区别;这个错误的原因可能是什么?

java - 在 testng 的 @BeforeTest 中访问 spring 上下文

java - int A 不等于 int B

java - 隐藏每个 Activity 中的软按钮

Java 骰子游戏生成新数字时遇到问题

Java Selenium 按钮单击

maven - 为什么 TestNG 会多次运行这些测试类?

java - 如何处理 <div id ="preloader"> 用 Selenium 模糊其他元素,检查其他答案没有任何帮助

java - 设置 JOptionPane.showMessageDialog 显示前面