Python Selenium无法连接/usr/local/bin/chromedriver服务的问题求助
解决服务器本地运行Selenium ChromeDriver权限与连接问题
问题场景
通过SSH运行以下Python代码无报错,但在服务器本地直接运行时先后出现权限错误与连接错误,仅root权限SSH运行正常:
from selenium import webdriver from selenium.webdriver.common.by import By from pyvirtualdisplay import Display import selenium.common.exceptions import time # 原代码遗漏此导入,需补充 chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') display = Display(visible=0, size=(800, 800)) chrome_options.binary_location = "/opt/google/chrome/chrome" display.start() browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', chrome_options=chrome_options) browser.get("https://www.google.com") time.sleep(5) html = browser.page_source browser.close() display.stop()
出现的错误
- 初始权限错误:
chromedriver executable may have wrong permissions
- 设置755权限后出现连接错误:
Can not connect to the Service /usr/local/bin/chromedriver
解决步骤
1. 修复代码依赖问题
原代码未导入time模块,运行时会触发NameError,必须在代码开头添加import time。
2. 调整文件权限与所属用户
- 将chromedriver和Chrome程序的所有者改为当前运行代码的普通用户(替换
your_username为实际用户名):sudo chown your_username:your_username /usr/local/bin/chromedriver sudo chown -R your_username:your_username /opt/google/chrome/ - 确认执行权限对普通用户开放:
sudo chmod 755 /usr/local/bin/chromedriver sudo chmod -R 755 /opt/google/chrome/
3. 优化Chrome运行参数
在ChromeOptions中添加适配服务器环境的参数,解决连接与运行问题:
chrome_options.add_argument('--headless=new') # 启用新版无头模式,适配现代Chrome chrome_options.add_argument('--disable-dev-shm-usage') # 规避服务器/dev/shm空间限制 chrome_options.add_argument('--disable-gpu') # 禁用GPU加速,服务器无GPU环境 chrome_options.add_argument('--remote-debugging-port=9222') # 开启调试端口,避免连接失败 chrome_options.add_argument('--user-data-dir=/tmp/chrome-user-data') # 指定临时用户数据目录,避免权限冲突
4. 配置环境变量(可选)
服务器本地运行时若找不到Chrome或ChromeDriver,可在运行脚本前导出路径:
export PATH=$PATH:/usr/local/bin/:/opt/google/chrome/
5. 验证普通用户运行权限
完成上述调整后,切换到普通用户,直接在服务器本地运行代码,确认无报错。
内容的提问来源于stack exchange,提问作者ali heidari
相关产品推荐
相关产品推荐

