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

如何用Selenium 4和PowerShell在浏览器中测量操作耗时?

在Selenium PowerShell脚本中用PerformanceNavigationTiming实现浏览器端计时

正确实现方案

替代废弃的PerformanceTiming,需通过浏览器performance接口获取具体的PerformanceNavigationTiming实例,以下是适配你的流程的代码:

Add-Type -Path "<path to web driver>\WebDriver.dll"
$options = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$options.AddArgument("--disable-gpu")
$driver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($options)

# ... 执行登录、加载数据库条目的现有逻辑 ...

# 获取当前页面的导航性能条目
$navEntry = $driver.ExecuteScript("return performance.getEntriesByType('navigation')[0];")

# 标记笔记操作开始的高精度时间点
$startTime = $driver.ExecuteScript("return window.performance.now();")

# ... 执行打开笔记区域、输入内容、保存的操作 ...

# 标记笔记操作结束的时间点
$endTime = $driver.ExecuteScript("return window.performance.now();")

# 计算操作耗时(单位:毫秒)
$operationDuration = $endTime - $startTime
Write-Host "笔记操作总耗时:$operationDuration ms"

# 若需统计页面导航阶段耗时(比如从导航开始到DOM加载完成)
$pageLoadDuration = $navEntry.DomComplete - $navEntry.NavigationStart
Write-Host "页面加载耗时:$pageLoadDuration ms"

错误原因解析

你之前的调用方式存在两个问题:

  • PerformanceEntry是抽象类,并非可直接访问的实例,必须通过performance.getEntriesByType('navigation')获取对应页面的导航条目对象。
  • 直接引用performanceEntry会因未定义变量报错,因为这个名称并未指向任何实际的性能条目实例。

补充说明

  • performance.now()提供相对于页面初始化的高精度计时,适合测量特定交互操作的耗时,比旧的PerformanceTiming时间戳更灵活。
  • 若需追踪多段操作的耗时,可在关键节点多次调用performance.now()并记录差值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:35:20