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

C# Selenium中是否可以将WebDriver实例从一个类传递到另一个类?

C# Selenium WebDriver 跨类传递实现方案

该需求完全可以在C# Selenium中实现,常用两种实现方案如下:

方案1:构造函数传参(适合小型测试项目)

直接通过类的构造函数传递已经实例化的WebDriver对象,逻辑直观无额外依赖:

  1. 初始化类中生成WebDriver实例
public class TestInit
{
    public IWebDriver CreateDriver()
    {
        IWebDriver driver = new ChromeDriver();
        driver.Url = "https://www.example.com";
        return driver;
    }
}
  1. 业务操作类通过构造函数接收实例
public class HomePageAction
{
    private readonly IWebDriver _driver;
    public HomePageAction(IWebDriver driver)
    {
        _driver = driver;
    }

    public void ClickSearchButton()
    {
        _driver.FindElement(By.Id("search-btn")).Click();
    }
}
  1. 执行测试时传递实例
public class TestRunner
{
    public void ExecuteTest()
    {
        var testInit = new TestInit();
        var driver = testInit.CreateDriver();
        // 传递driver到业务类
        var homePage = new HomePageAction(driver);
        homePage.ClickSearchButton();
        driver.Quit();
    }
}

方案2:静态类全局托管(适合中大型测试项目)

通过静态类统一托管WebDriver实例,不需要逐层传参,调用更便捷:

// 全局静态托管类
public static class DriverHost
{
    public static IWebDriver Driver { get; set; }
}

// 初始化时赋值
public class TestInit
{
    public void InitDriver()
    {
        DriverHost.Driver = new ChromeDriver();
        DriverHost.Driver.Url = "https://www.example.com";
    }
}

// 其他业务类直接调用即可
public class HomePageAction
{
    public void ClickSearchButton()
    {
        DriverHost.Driver.FindElement(By.Id("search-btn")).Click();
    }
}

注意事项

  • 多线程并行测试场景下,需要给静态driver属性加[ThreadStatic]特性,避免不同线程的driver实例冲突:
public static class DriverHost
{
    [ThreadStatic]
    private static IWebDriver _driver;
    public static IWebDriver Driver 
    { 
        get => _driver; 
        set => _driver = value; 
    }
}
  • 所有测试执行完成后必须调用driver.Quit()方法释放资源,避免后台残留驱动进程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:54:01