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及以上版本
额外注意事项
- 若
/tmp在你的环境中不可写,替换为环境允许的其他可写路径 - 无服务器环境中,函数执行结束后
/tmp目录会自动清理,无需手动删除缓存文件
内容的提问来源于stack exchange,提问作者Usman Tahir
相关产品推荐
相关产品推荐

