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

Python 12环境下Lambda中Selenium 4.19无法运行求助

解决Selenium缓存文件夹无法创建(只读文件系统)问题

问题原因

你的运行环境(如AWS Lambda这类沙箱环境)中/home/sbx_user1051/目录是只读状态,而Selenium默认会尝试在该路径下创建.cache/selenium缓存文件夹,触发只读文件系统错误。

解决方案

通过指定Chrome的用户数据目录、缓存目录,以及Selenium自身的缓存目录到可写的临时路径(多数沙箱环境中/tmp为可读写目录),绕过只读目录限制。

修改后的代码片段

import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 设置Selenium自身缓存目录到可写路径
os.environ['SELENIUM_CACHE_DIR'] = '/tmp/selenium-cache'

chrome_options = Options()
chrome_options.add_argument("--headless=new")  # Selenium 4.13+推荐使用新版无头模式
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-extensions")
# 指定Chrome用户数据和磁盘缓存的可写路径
chrome_options.add_argument("--user-data-dir=/tmp/chrome-user-data")
chrome_options.add_argument("--disk-cache-dir=/tmp/chrome-cache")

# 创建WebDriver实例
driver = webdriver.Chrome(options=chrome_options)
driver.get(KWENTA_LIQUIDATION_PRICE_URL)

wait = WebDriverWait(driver, 10)
tokens = wait.until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "chakra-text.css-2utkvs")))

关键参数说明

  • os.environ['SELENIUM_CACHE_DIR']:覆盖Selenium默认的缓存路径,将其指向可写的/tmp目录
  • --user-data-dir:指定Chrome的用户数据存储目录,避免默认路径的只读限制
  • --disk-cache-dir:指定Chrome的磁盘缓存存储路径
  • --headless=new:新版无头模式兼容性更好,适合Selenium 4.13及以上版本

额外注意事项

  1. 若/tmp在你的环境中不可写,替换为环境允许的其他可写路径
  2. 无服务器环境中,函数执行结束后/tmp目录会自动清理,无需手动删除缓存文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:05:35