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

Selenium4.3.1报错chrome.setDefaultService is not a function如何解决

报错原因

Selenium Webdriver 从4.3.0版本开始调整了selenium-webdriver/chrome模块的API导出规则,setDefaultService不再作为方法挂载在chrome模块的默认导出对象上,直接调用chrome.setDefaultService()就会触发“is not a function”的类型错误。

修复方法

你可以根据自己的使用场景选下面任意一种方案:

  • 方案1(官方推荐):构建Driver实例时直接传入配置好的Chrome服务,不需要全局设置默认服务,代码示例如下:
const { Builder } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");

const service = new chrome.ServiceBuilder(myChromePath).build();
const driver = new Builder()
  .forBrowser("chrome")
  .setChromeService(service)
  .build();
  • 方案2:如果需要全局设置默认Chrome服务,单独从chrome模块引入setDefaultService方法后再调用,不要从chrome默认对象上取方法,代码示例如下:
const { Builder } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
// 单独导出setDefaultService方法
const { setDefaultService } = require("selenium-webdriver/chrome");

const service = new chrome.ServiceBuilder(myChromePath).build();
setDefaultService(service);
// 后续构建Chrome驱动实例不需要重复传入service配置
const driver = new Builder().forBrowser("chrome").build();

补充说明:Selenium 4.x 版本迭代过程中对不少子模块的API做了拆分导出,后续遇到同类“方法不存在”的报错,可以优先检查对应方法是否支持单独从子模块引入。

内容的提问来源于stack exchange,提问作者Mahmoud Mousa Hamad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:09:24