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

EC2实例运行Selenium时遇[Errno 13]权限拒绝错误的解决方法

解决EC2上Selenium的Permission denied: '/.wdm'错误

方案一:直接使用已安装的ChromeDriver(推荐)

你已经在EC2中手动安装了ChromeDriver到/usr/bin/chromedriver,完全可以跳过webdriver-manager的自动安装逻辑,直接指定驱动路径初始化浏览器:

修改代码中初始化driver的部分:

# 替换原来的ChromeDriverManager相关代码
driver = webdriver.Chrome(service=Service('/usr/bin/chromedriver'))

这样就绕开了webdriver-manager试图在根目录创建.wdm缓存文件夹的权限问题。

方案二:给webdriver-manager指定有权限的缓存目录

如果仍想保留webdriver-manager的自动管理功能,可通过指定缓存目录到当前用户有权限写入的路径(比如用户主目录):

修改代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 指定缓存目录为当前用户的.wdm文件夹
driver = webdriver.Chrome(service=Service(ChromeDriverManager(cache_dir='/home/ec2-user/.wdm').install()))
# 后续代码保持不变
driver.get(url)
elem1 = driver.find_element(By.NAME, "location_value")
elem2 = driver.find_element(By.NAME, "q")
elem1.click()
elem1.clear()
elem1.send_keys(city)
elem2.click()
elem2.clear()
elem2.send_keys(category)
elem2.send_keys(Keys.RETURN)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "location_google_maps_homepage"))).click()
url = driver.current_url
driver.close()

额外检查项

  1. 确保EC2实例已安装对应版本的Chrome浏览器:
    • 若为Amazon Linux系统,执行:sudo yum install google-chrome-stable -y
    • 若为Ubuntu系统,执行:sudo apt update && sudo apt install google-chrome-stable -y
  2. 确认ChromeDriver权限可执行:
    执行命令:sudo chmod +x /usr/bin/chromedriver

内容的提问来源于stack exchange,提问作者Benjamin Zatman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:12:30