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

.NET6.0框架升级后Selenium测试变慢的优化咨询

.NET 6.0升级后Selenium测试性能优化方案

问题背景

测试项目框架升级至.NET 6.0后,Selenium测试运行速度明显变慢。由于WinAppDriver暂未兼容W3C标准,无法将Selenium.Support和WebDriver升级至4.x版本(当前使用3.141.0),需针对性优化测试运行效率。

项目配置

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0-windows</TargetFramework>
    <OutputType>Library</OutputType>
    <RootNamespace>test</RootNamespace>
    <AssemblyName>test</AssemblyName>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <AssemblyTitle>test</AssemblyTitle>
    <Product>test</Product>
    <Copyright>Copyright ©  2019</Copyright>
    <AssemblyVersion>1.0.0.0</AssemblyVersion>
    <FileVersion>1.0.0.0</FileVersion>
  </PropertyGroup>

  <ItemGroup>
    <None Update="test.runsettings">
      <SubType>Designer</SubType>
    </None>
  </ItemGroup>
   <ItemGroup>
    <PackageReference Include="DnsClient" Version="1.0.7" />
    <PackageReference Include="ExtentReports.signed" Version="3.1.3" />
    <PackageReference Include="Microsoft.AspNet.Razor" Version="3.2.9" />
    <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
    <PackageReference Include="MongoDB.Bson" Version="2.7.2" />
    <PackageReference Include="MongoDB.Driver" Version="2.7.2" />
    <PackageReference Include="MongoDB.Driver.Core" Version="2.7.2" />
    <PackageReference Include="NUnit" Version="3.13.2" />
    <PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
    <PackageReference Include="RazorEngine" Version="3.10.0" />
    <PackageReference Include="System.Buffers" Version="4.5.1" />
    <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
    <PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="RestSharp" Version="106.15.0" />
    <PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" />
    <PackageReference Include="Selenium.Support" Version="3.141.0" />
    <PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
    <PackageReference Include="System.Buffers" Version="4.5.1" />
  </ItemGroup>
</Project>

性能优化方案

1. 匹配浏览器与驱动版本

当前Selenium.Chrome.WebDriver版本为85.0.0,需确保本地Chrome浏览器版本与驱动完全一致,版本不匹配会导致启动延迟、命令执行卡顿。可升级驱动至Selenium 3.141.0支持的最高兼容版本(该版本支持Chrome 94及以下)。

2. 启用Chrome无头模式

初始化ChromeDriver时添加无头参数,减少UI渲染开销:

var options = new ChromeOptions();
options.AddArgument("--headless");
options.AddArgument("--disable-gpu");
options.AddArgument("--no-sandbox"); // 规避权限问题
var driver = new ChromeDriver(options);

3. 优化元素等待策略

  • 彻底替换Thread.Sleep(),改用WebDriverWait实现显式等待,仅在元素满足状态条件时继续执行:
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var targetElement = wait.Until(d => d.FindElement(By.Id("target-element")));
  • 调整全局隐式等待时间,设置合理默认值(如3秒),特殊场景用显式等待覆盖,避免无意义的长时间等待。

4. 复用浏览器实例

在测试类的SetUpFixture中初始化一次浏览器,TearDownFixture中统一关闭,减少进程启动销毁的开销。测试用例执行后需清理页面状态(如清除Cookie、刷新页面),避免测试间数据污染。

5. 优化.NET 6.0编译配置

在项目文件中添加以下配置,启用运行时优化:

<PropertyGroup>
  <Optimize>true</Optimize>
  <TieredCompilation>true</TieredCompilation>
  <TieredCompilationQuickJit>true</TieredCompilationQuickJit>
</PropertyGroup>

该配置会让.NET运行时生成更高效的机器码,提升测试代码执行速度。

6. 清理冗余依赖

移除项目中重复的System.Buffers包引用;检查并删除未实际使用的NuGet包(如DnsClient、MongoDB系列包若未参与测试逻辑),减少项目加载开销。

7. 并行执行测试

在test.runsettings中配置NUnit并行测试,利用多核CPU提升效率:

<RunSettings>
  <NUnit>
    <Parallelize>
      <Workers>4</Workers> <!-- 根据CPU核心数调整 -->
      <Scope>Fixture</Scope>
    </Parallelize>
  </NUnit>
</RunSettings>

注意并行执行时需保证每个测试用例使用独立浏览器实例(未复用实例场景),避免资源竞争。

8. 禁用Chrome冗余功能

添加更多启动参数关闭不必要的功能:

options.AddArgument("--disable-extensions");
options.AddArgument("--disable-plugins");
options.AddArgument("--disable-images"); // 仅当测试无需验证图片加载时使用
options.AddArgument("--window-size=1920,1080"); // 固定窗口大小,避免布局重绘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:18:15