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

使用webdriver.ChromeService配置路径时遇os.path.expanduser类型错误

问题分析与解决方案

错误根源

你把ChromeService对象传给了os.path.expanduser(),但这个函数仅接受字符串、字节或路径类对象,不接受Service实例,这直接导致了TypeError。同时后续把Service对象添加到sys.path、用Service对象初始化Chrome的写法也不符合Selenium的API规范。

修正代码(Selenium 4.x+ 版本)

正确的做法是先处理路径字符串,再创建ChromeService,最后把Service实例传给Chrome的service参数:

import os
import sys
from selenium import webdriver

# 先处理路径字符串
driver_path = r"D:/My Download/chromedriver_win32/chromedriver.exe"
driver_path = os.path.expanduser(driver_path)
print('chromedriver path: {}'.format(driver_path))

# 创建ChromeService
service = webdriver.ChromeService(executable_path=driver_path)
# 初始化浏览器
driver = webdriver.Chrome(service=service)

旧版本Selenium(3.x及以下)写法

如果你的Selenium版本较低,不需要用ChromeService,直接传入executable_path参数即可:

import os
import sys
from selenium import webdriver

driver_path = r"D:/My Download/chromedriver_win32/chromedriver.exe"
driver_path = os.path.expanduser(driver_path)
print('chromedriver path: {}'.format(driver_path))

driver = webdriver.Chrome(executable_path=driver_path)

额外说明

  • sys.path.append()是用来添加Python模块搜索路径的,不需要把chromedriver路径加到这里,驱动程序路径只需要在初始化时指定给Selenium即可。
  • 路径写法的单/双引号、r前缀问题不是此次报错的原因,你的原始路径写法本身是有效的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:26:01