Linux下Python调用Selenium+Chromedriver截图终端无响应问题求助
解决Selenium+ChromeDriver在Linux下启动卡住的问题
看起来你遇到了ChromeDriver启动时卡住无响应的问题,我来给你几个实用的排查和解决思路:
1. 优先确认Chrome浏览器与ChromeDriver的版本匹配
这是最常见的触发原因——ChromeDriver的版本必须和你系统中安装的Chrome浏览器大版本完全一致(比如Chrome是118.x,Driver也得是118.x系列)。
- 查看Chrome版本:执行
google-chrome --version - 查看ChromeDriver版本:执行
chromedriver --version
如果版本不匹配,重新下载对应版本的ChromeDriver替换即可。
2. 直接指定ChromeDriver的绝对路径
虽然你已经创建了软链接,但有时候系统环境变量或权限问题会导致驱动无法被正确识别。试试在代码里直接指定驱动的绝对路径:
如果你用的是较新版本的Selenium(支持Service类):
#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service('/usr/local/share/chromedriver') browser = webdriver.Chrome(service=service) browser.get('http://www.google.com/') browser.save_screenshot('screenie.png') browser.quit()
如果你用的是旧版Selenium(比如你当前Python2.7对应的版本):
#!/usr/bin/env python from selenium import webdriver browser = webdriver.Chrome(executable_path='/usr/local/share/chromedriver') browser.get('http://www.google.com/') browser.save_screenshot('screenie.png') browser.quit()
3. 针对无桌面Linux环境添加无头模式配置
如果你的Linux是没有图形界面的服务器,Chrome必须以无头模式运行,否则会卡在启动环节。添加以下配置参数:
#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') # 无头模式 chrome_options.add_argument('--no-sandbox') # 解决Linux下的沙箱权限问题 chrome_options.add_argument('--disable-dev-shm-usage') # 避免/dev/shm内存不足导致的崩溃 # 结合绝对路径使用 browser = webdriver.Chrome(executable_path='/usr/local/share/chromedriver', options=chrome_options) browser.get('http://www.google.com/') browser.save_screenshot('screenie.png') browser.quit()
--no-sandbox和--disable-dev-shm-usage这两个参数在Linux环境下几乎是必备的,尤其是非root用户运行时。
4. 检查ChromeDriver的文件权限
确保你的ChromeDriver文件有可执行权限,并且当前用户能读取它:
执行命令:
chmod +x /usr/local/share/chromedriver ls -l /usr/local/share/chromedriver
确认输出中的权限列包含x(可执行),且所属用户/组是当前运行代码的用户。
5. 查看ChromeDriver的启动日志定位问题
让ChromeDriver输出详细日志,帮助你找到具体的启动故障点:
#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.chrome.service import Service # 指定日志输出路径 service = Service('/usr/local/share/chromedriver', log_path='./chromedriver.log') browser = webdriver.Chrome(service=service) browser.get('http://www.google.com/') browser.save_screenshot('screenie.png') browser.quit()
运行后查看生成的chromedriver.log文件,里面会记录驱动启动时的所有细节,包括可能的错误提示。
内容的提问来源于stack exchange,提问作者user1427930
相关产品推荐
相关产品推荐

