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

使用Selenium时触发NullReferenceException问题咨询

问题排查与解决

错误原因

触发System.NullReferenceException的核心原因是类级别的driver变量未被正确初始化:在StartBrowser方法中,你重新声明了一个局部的IWebDriver driver,这会覆盖类成员driver的作用域,导致类成员driver始终处于null状态。当StartGoogle测试方法调用driver.FindElement时,自然会触发空引用异常。

修复后的代码

修改StartBrowser方法,去掉局部变量的类型声明,直接给类成员driver赋值即可:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
//using WebDriverManager.DriverConfigs.Impl;

namespace PitauPortal
{
    public class Tests
    {
        IWebDriver driver;
        [SetUp]
        public void StartBrowser()
        {
            //new WebdriverChromeDriver.DriverManager().SetUpDriver(new ChromeConfig());

            // 移除局部变量的IWebDriver声明,直接为类成员driver赋值
            driver = new ChromeDriver();

            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);
            driver.Url = "https://www.google.com/";
            driver.Manage().Window.Maximize();
        }

        [Test]
        public void StartGoogle()
        {
            string searchText = "Latest News";
            driver.FindElement(By.XPath("//input[@name='q']")).SendKeys(searchText);
        }
    }
}

额外优化建议

  • 添加[TearDown]方法,测试结束后关闭浏览器,避免资源泄漏:
    [TearDown]
    public void CloseBrowser()
    {
        driver?.Quit();
        driver?.Dispose();
    }
    
  • 启用注释掉的WebDriverManager(需先安装对应NuGet包),它会自动管理ChromeDriver版本,避免浏览器与驱动版本不兼容问题:
    new WebDriverManager.DriverManager().SetUpDriver(new ChromeConfig());
    driver = new ChromeDriver();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:35:26