You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium使用Base类driver及向Page类传参时出现空指针异常求解

场景1:继承Base类调用driver触发空指针

触发原因

Base类中的driver成员默认值为null,你在Test类的main方法中直接调用driver.get()等方法前,没有执行Base类中用于初始化driver的browser()方法,driver未被赋值为ChromeDriver实例就被调用,因此抛出空指针异常。

修复方案

在操作driver前先调用browser()方法完成初始化,修改后Test类代码如下:

public class FacebookTestCase extends Base{
    public static void main(String[] args ) {
        // 先执行父类的浏览器初始化逻辑,给driver赋值
        new FacebookTestCase().browser();
        // 注意url需要加http/https协议头,否则也会触发报错
        driver.get("https://www.facebook.com"); 
        driver.findElement(By.id("email")).sendKeys("tetst@test.in");
        driver.findElement(By.id("pass")).sendKeys("test");
        driver.findElement(By.name("login")).click();
    }
}

场景2:页面对象分层调用触发空指针

触发原因

你在Test类中调用的driverInitialization()方法没有正确给Base类的静态driver赋值:要么是该方法内部逻辑异常导致初始化中断,要么是方法名写错(场景1中Base类的初始化方法名为browser(),此处调用的是不存在的driverInitialization(),driver自然还是null)。空的driver实例被传入Page类构造方法后,调用driver.findElement()就会触发空指针。

修复方案

  1. 先确认Base类中的driver初始化方法存在且逻辑正确,能够给静态driver赋值为正常的ChromeDriver实例
  2. 可增加非空校验提前发现初始化问题,修改后Test类代码如下:
public class FacebookTestCase extends Base{
    public static void main(String[] args ) {
        // 调用正确的driver初始化方法
        new FacebookTestCase().browser();
        // 非空校验提前拦截问题
        if (driver == null) {
            throw new RuntimeException("浏览器驱动初始化失败,请检查初始化逻辑");
        }
        FacebookElements fb = new FacebookElements(driver);
        fb.login();
    }
}

内容的提问来源于stack exchange,提问作者Shanjay Nithin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:42:01