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

在Ruby版Selenium Chromedriver中配置CPUThrottlingRate限速的方法

解决方案

Ruby版本Selenium 4.x的devtools#send_cmd方法仅接受1个Hash类型参数,参数内需同时指定CDP方法名和对应参数,正确写法如下:

browser = Selenium::WebDriver.for :chrome, options: options
devtools = browser.devtools
# 正确传参格式:将方法名和参数分别放在method和params键下
devtools.send_cmd(
  method: 'Emulation.setCPUThrottlingRate',
  params: { rate: 10 }
)

报错原因说明

  1. 首次报错是因为你给send_cmd传了方法名、参数两个独立参数,不符合Ruby版API的参数要求;
  2. 调整为单参数后报错是因为参数结构不对,CDP接口无法识别到rate字段;
  3. 直接在driver实例调用send_cmd报错是因为该方法属于devtools实例,不是driver实例的原生方法。

完整集成示例

你可以将CPU节流逻辑和现有网络限速逻辑整合,根据不同的throttling等级匹配对应的CPU降速倍率:

# 原有网络限速逻辑之后添加以下代码
# 配置对应等级的CPU降速倍率:1为不限速,数值越大速度越慢
cpu_throttling_rate = case throttling
when 'slow'
  10
when 'regular'
  2
when 'fast'
  1
end
devtools = browser.devtools
devtools.send_cmd(
  method: 'Emulation.setCPUThrottlingRate',
  params: { rate: cpu_throttling_rate }
)
return browser

你使用的ChromeDriver v92版本完全支持Emulation.setCPUThrottlingRate CDP命令,调整写法后即可同时实现网络限速和CPU性能限制的模拟需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:01