Ubuntu下运行Selenium Python脚本报错:Chrome启动失败
解决Ubuntu普通用户运行Selenium Headless Chrome时的"chrome failed to start"错误
碰到这个chrome failed to start的报错,在Ubuntu普通用户环境下大概率是权限不足、启动参数不全或者版本不匹配导致的,我给你整理几个靠谱的解决步骤:
1. 先确认Chromedriver与Chrome版本完全匹配
这是最容易踩的坑!Chromedriver的版本必须和你系统里安装的Google Chrome版本完全对应(大版本一致,小版本尽量匹配)。
- 先查Chrome版本:
google-chrome --version - 下载对应版本的Chromedriver替换掉你现有文件
- 别忘了给Chromedriver加可执行权限:
chmod +x /home/admin/web/web.com/public_html/scripts/az/chromedriver
2. 补充普通用户专属的Headless启动参数
普通用户没有root权限,Headless Chrome需要额外参数绕过沙箱和资源限制,修改你的脚本Options部分:
import os from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--headless=new') # 新版Headless模式,兼容性更好 options.add_argument('--disable-gpu') options.add_argument('--no-sandbox') # 普通用户必须加,绕过Chrome沙箱限制 options.add_argument('--disable-dev-shm-usage') # 解决Ubuntu下/dev/shm空间不足的问题 options.add_argument('--remote-debugging-port=9222') # 可选,方便调试启动失败问题 # 若Chrome不在默认路径,手动指定二进制文件位置 options.binary_location = "/usr/bin/google-chrome" # 注意:新版Selenium已经废弃chrome_options参数,改用options driver = webdriver.Chrome(executable_path="/home/admin/web/web.com/public_html/scripts/az/chromedriver", options=options)
3. 检查文件与目录的权限
- 确保普通用户对Chromedriver所在目录和文件有读+执行权限:
执行ls -l /home/admin/web/web.com/public_html/scripts/az/chromedriver查看权限,若普通用户(other列)没有rx权限,执行:chmod o+rx /home/admin/web/web.com/public_html/scripts/az/chromedriver - 测试普通用户能否单独启动Headless Chrome:执行
google-chrome --headless --dump-dom https://google.com,如果这个命令报错,说明Chrome本身的权限或安装有问题,需要先修复Chrome的访问权限。
4. 排查环境变量问题
有些情况下普通用户的PATH里没有Chrome的路径,你可以先在普通用户终端里执行which google-chrome,如果返回空,说明需要把Chrome的路径(比如/usr/bin)加到普通用户的PATH里,或者直接在脚本里用options.binary_location指定Chrome路径。
内容的提问来源于stack exchange,提问作者spider22
相关产品推荐
相关产品推荐

