使用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
相关产品推荐
相关产品推荐

