使用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
相关产品推荐
相关产品推荐

