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

GitHub环境运行Selenium遇chromedriver.exe权限错误求助

问题描述

在GitHub Codespaces的VS Code环境中运行Selenium代码时,持续触发以下报错:

selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable may have wrong permissions
PermissionError: [Errno 13] Permission denied: '/workspaces/web_Scrape/Stock project/chromedriver.exe'

该代码在本地Windows机器可正常运行,尝试过常规解决方案无效,现求助问题原因及解决办法。

涉事代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import multiprocessing
import time
import csv


#/////////////////////////////////////////////////////////////////// Imports
website = 'https://stockanalysis.com/stocks/'
path = r'/workspaces/web_Scrape/Stock project/Drivers/chromedriver.exe'
options = Options()
driver = webdriver.Chrome(service=Service(path), options=options)
driver.get(website)
问题原因
  • 环境格式不兼容:GitHub Codespaces基于Linux容器运行,.exe是Windows专属可执行文件格式,Linux系统无法直接识别执行。
  • 权限问题本质是格式错误:即使修改文件权限,Windows二进制文件也不具备Linux系统的可执行属性,报错的权限问题只是表象,核心是文件格式不匹配。
  • 硬编码路径不符合环境规范:代码中指定的Windows格式路径,在Linux文件系统中无法正确适配。
解决办法

方法1:用webdriver-manager自动适配环境

代码已导入ChromeDriverManager,直接利用它自动下载对应环境的chromedriver,无需手动指定路径:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# 保留其他原有导入代码

website = 'https://stockanalysis.com/stocks/'
options = Options()
# Linux容器必须添加的Chrome启动参数
options.add_argument("--headless=new")  # 无头模式(无图形界面环境必需)
options.add_argument("--no-sandbox")    # 规避容器权限限制
options.add_argument("--disable-dev-shm-usage")  # 避免内存不足问题

# 自动获取适配当前环境的chromedriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get(website)

方法2:手动替换为Linux版chromedriver

  1. 删除项目中现有的chromedriver.exe,下载与当前Chrome版本匹配的Linux版chromedriver(无.exe后缀)。
  2. 将下载的文件放到原路径,执行命令赋予可执行权限:
chmod +x /workspaces/web_Scrape/Stock project/Drivers/chromedriver
  1. 修改代码中的路径配置:
path = '/workspaces/web_Scrape/Stock project/Drivers/chromedriver'
  1. 同样需要添加方法1中的--headless=new等Linux必需的启动参数。
关键注意事项

Linux容器环境下运行Chrome必须启用无头模式,否则会因缺少图形界面启动失败;--no-sandbox和--disable-dev-shm-usage参数是容器环境规避权限、内存问题的必备配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:52:10