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

如何修改Selenium JavaScript中executeScript的脚本超时时间

Selenium WebDriver JavaScript 修改executeScript脚本超时时间

问题

使用Selenium WebDriver JavaScript的executeScript执行长耗时脚本时,默认15秒会抛出ScriptTimeoutError,找不到JS库对应的配置说明,复现代码如下:

const { Builder, By, Key } = require("selenium-webdriver");

async function example() {
  let driver = await new Builder().forBrowser("chrome").build();

  await driver.get("https://google.com");

  await driver.executeScript(`
  
  await new Promise((resolve) => setTimeout(resolve, 30000));
  
  `);
  console.log("DONE!");
}

example();

报错信息:

ScriptTimeoutError: script timeout
  (Session info: chrome=118.0.5993.118)
    at Object.throwDecodedError (c:\Users\Admin\Documents\selenium scripts\seleniumDemo\node_modules\selenium-webdriver\lib\error.js:524:15)
    at parseHttpResponse (c:\Users\Admin\Documents\selenium scripts\seleniumDemo\node_modules\selenium-webdriver\lib\http.js:601:13)
    at Executor.execute (c:\Users\Admin\Documents\selenium scripts\seleniumDemo\node_modules\selenium-webdriver\lib\http.js:529:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Driver.execute (c:\Users\Admin\Documents\selenium scripts\seleniumDemo\node_modules\selenium-webdriver\lib\webdriver.js:745:17)
    at async example (c:\Users\Admin\Documents\selenium scripts\seleniumDemo\tests\test 4.js:8:3) {
  remoteStacktrace: '\tGetHandleVerifier [0x00007FF705638EF2+54786]\n' +

解决方法

通过driver.manage().setTimeouts()方法设置脚本超时时间,传入包含script字段的对象,值为超时毫秒数。

修改后的代码示例

const { Builder, By, Key } = require("selenium-webdriver");

async function example() {
  let driver = await new Builder().forBrowser("chrome").build();
  
  // 设置脚本超时为35秒(35000毫秒),需大于脚本实际运行时间
  await driver.manage().setTimeouts({ script: 35000 });

  await driver.get("https://google.com");

  await driver.executeScript(`
    await new Promise((resolve) => setTimeout(resolve, 30000));
  `);
  console.log("DONE!");
}

example();

说明

  • Selenium JS默认脚本超时为15000毫秒(15秒),通过setTimeouts的script参数可以自定义超时时长
  • 设置的超时时间需略长于executeScript中脚本的实际运行时间,避免触发超时错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:12:46