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

Linux下Selenium ChromeDriver空指针异常问题求助

Selenium Linux环境下NullPointerException问题排查与解决

问题现象

测试方法getHomePageTest执行失败,抛出异常:

java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebDriver.get(String)" because "this.driver" is null

环境信息

  • Chrome版本:121.0.6167.184(官方版本,64位)
  • ChromeDriver需下载对应版本的Linux包

涉及代码

HomePage类

public class HomePage {

    private WebDriver driver;

    private static String PAGE_URL="https://magento.softwaretestingboard.com/";

    @FindBy(how = How.ID, using="ui-id-6")
    private WebElement gearItem;

    public HomePage(WebDriver driver){
        this.driver=driver;
        this.driver.get(PAGE_URL);

        PageFactory.initElements(this.driver, this);
    }

    public void clickOnGearItem(){
        (new WebDriverWait(driver, 10))
                .until(ExpectedConditions.elementToBeClickable(gearItem)).click();
    }
}

TestBase类

public class TestBase {
    public static WebDriver driver;

    @BeforeSuite
    public void initializeWebDriver() {
        System.setProperty("webdriver.chrome.driver", "chrome");

        driver = new ChromeDriver();

        driver.manage().window().maximize();

        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    }

    @AfterSuite
    public void quitDriver() {
        driver.quit();
    }
}

ApplyTests类

public class ApplyTests extends TestBase {
    @Test
    public void getHomePageTest(){
        HomePage home = new HomePage(driver);
        home.clickOnGearItem();
    }
}

已尝试操作

  • 搭配不同浏览器(Mozilla+GeckoDriver、Chrome+ChromeDriver)及多个版本测试
  • 查阅相关技术问题
  • 更新系统及浏览器
  • 代码在Windows环境可正常运行,但Linux环境下异常未解决

解决思路

  1. 检查ChromeDriver路径与权限
    Linux环境下System.setProperty("webdriver.chrome.driver", "chrome")无法正确定位可执行文件:

    • 指定ChromeDriver绝对路径,比如/usr/local/bin/chromedriver
    • 给ChromeDriver添加可执行权限:chmod +x /path/to/chromedriver
  2. 验证TestBase初始化逻辑

    • 确认@BeforeSuite注解被测试框架正确识别(检查TestNG版本兼容性、注解导入是否正确)
    • 若初始化方法未执行,可临时改用@BeforeMethod注解替代@BeforeSuite,或在测试方法中添加临时初始化代码验证
  3. 配置Linux无头模式
    Linux无图形界面需开启Chrome无头模式,修改TestBase初始化代码:

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless=new");
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-dev-shm-usage");
    driver = new ChromeDriver(options);
    

    注:--no-sandbox和--disable-dev-shm-usage用于规避Linux环境下的权限与内存限制

  4. 依赖版本兼容性检查

    • 确保Selenium版本与Chrome、ChromeDriver匹配(Selenium 4.6+支持自动管理Driver,可移除System.setProperty配置,由框架自动处理Driver路径)
  5. 调试driver状态
    在测试方法中添加打印语句确认driver是否为null:

    @Test
    public void getHomePageTest(){
        System.out.println("Driver instance: " + driver);
        HomePage home = new HomePage(driver);
        home.clickOnGearItem();
    }
    

    若打印为null,需排查测试框架配置(比如TestNG.xml是否正确扫描测试类)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:30:26