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

求助:使用Selenium Manager无法获取chromedriver.exe的报错问题

解决Selenium获取chromedriver失败的问题

核心问题分析

从错误路径/var/task/selenium/webdriver/common/linux/selenium-manager能看出,运行环境是Linux,但代码里指定了Windows平台的.exe后缀文件,手动指定路径的操作干扰了Selenium Manager的自动管理逻辑,同时Linux环境下运行无头Chrome还需要额外参数支持。

具体解决步骤

1. 移除手动指定的chromedriver路径

Selenium 4.6+版本内置了Selenium Manager,会自动匹配系统环境下载对应版本的chromedriver,完全不需要手动指定路径。修改代码中的Service初始化部分:

# 原代码
service = Service(executable_path=r'./chromedriver.exe')
# 修改为
service = Service()
# 甚至可以直接省略service参数,新版Selenium会自动处理

2. 添加Linux无头Chrome必需参数

Linux环境下运行无头Chrome需要添加两个关键参数,避免权限和内存问题:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')  # 绕过沙箱模式,Linux环境必需
options.add_argument('--disable-dev-shm-usage')  # 解决/dev/shm内存不足问题

3. 确保环境中安装了Chrome浏览器

Selenium Manager需要检测已安装的Chrome版本来匹配chromedriver,Linux下安装Chrome的命令:

  • Debian/Ubuntu系:
apt-get update && apt-get install -y chromium-browser
  • Amazon Linux/CentOS系:
yum install -y chromium

4. 升级Selenium到最新版本

如果你的Selenium版本低于4.6,没有内置Selenium Manager,需要升级:

pip install --upgrade selenium

修改后的完整代码:

from http.server import BaseHTTPRequestHandler
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

class Handler(BaseHTTPRequestHandler):
   
   def do_GET(self):
       self.send_response(200)
       self.send_header('Content-type', 'text/plain')
       self.end_headers()

       try:
           service = Service()
           options = webdriver.ChromeOptions()
           options.add_argument('--headless')
           options.add_argument('--no-sandbox')
           options.add_argument('--disable-dev-shm-usage')
           driver = webdriver.Chrome(service=service, options=options)
           driver.get('https://www.example.com/')
           driver.save_screenshot("screenshot_example.png")
           driver.quit()  # 记得关闭浏览器释放资源
           
       except Exception as e:
           self.wfile.write(f'{str(e)}'.encode('utf-8'))

       self.wfile.write('Hello, world!'.encode('utf-8'))
       return

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:08:10