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

Selenium中executable_path弃用,如何改用Service类的技术咨询

解决Selenium中executable_path已弃用的问题

问题描述

运行代码时出现如下错误:

DeprecationWarning: executable_path has been deprecated, please pass in a Service object
  driver = webdriver.Chrome(ChromeDriverManager().install(),options=chrome_options)

我知道这个错误是说executable_path被弃用了,但不知道怎么换成Service()类,我Python经验不多,希望得到指导。原代码如下:

from datetime import datetime
import csv
import unidecode
import time
from bs4 import BeautifulSoup
import requests
import os
import json
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

def driverInitialize():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_argument("--start-maximized")
    chrome_options.add_argument("--no-sandbox")
    #chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--disable-notifications")
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument("--dns-prefetch-disable")
    chrome_options.add_argument('ignore-certificate-errors')
    prefs = {"profile.managed_default_content_settings.images": 2}
    chrome_options.add_experimental_option("prefs", prefs)
    driver = webdriver.Chrome(ChromeDriverManager().install(),options=chrome_options)
    #driver=webdriver.Chrome(options=chrome_options)
    driver.set_page_load_timeout(300)
    return driver

解决方法

只需要两步就能搞定:

  1. 新增Service类的导入:在现有导入代码里加上一行,导入Selenium的Chrome服务类。
  2. 修改驱动初始化代码:把原来直接传路径的方式,改成用Service对象包装路径后再传入。

修改后的完整代码:

from datetime import datetime
import csv
import unidecode
import time
from bs4 import BeautifulSoup
import requests
import os
import json
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
# 新增这行导入Service类
from selenium.webdriver.chrome.service import Service

def driverInitialize():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_argument("--start-maximized")
    chrome_options.add_argument("--no-sandbox")
    #chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--disable-notifications")
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument("--dns-prefetch-disable")
    chrome_options.add_argument('ignore-certificate-errors')
    prefs = {"profile.managed_default_content_settings.images": 2}
    chrome_options.add_experimental_option("prefs", prefs)
    
    # 先创建Service对象,把ChromeDriver的路径传进去
    service = Service(ChromeDriverManager().install())
    # 把service和options一起传给Chrome驱动
    driver = webdriver.Chrome(service=service, options=chrome_options)
    
    driver.set_page_load_timeout(300)
    return driver

为什么要这么改

Selenium 4之后官方弃用了直接传executable_path的方式,改用Service类来统一管理驱动的启动、停止等生命周期操作,这样代码结构更清晰,也能避免一些潜在的驱动管理问题。你原来用ChromeDriverManager自动下载驱动的逻辑完全不需要变,只是换了个传递路径的方式而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:47:17