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

Replit(Linux)环境下Selenium运行报错:状态码127及版本匹配问题

Replit Linux环境下Selenium运行问题解决

问题概述

在Replit的Python Repl中运行Selenium代码时遇到两个核心问题:

  • 指定ChromeDriver版本为114.0.5735.90时,驱动意外退出,状态码127
  • 不指定版本时,Selenium Manager无法找到117.0.5938.88版本的驱动包

已在replit.nix中添加pkgs.chromium和pkgs.chromedriver,但新版Selenium自动管理驱动的机制导致无法直接指定本地可执行路径。

解决方案

1. 确认replit.nix依赖配置

确保你的replit.nix文件已正确添加Chromium和ChromeDriver依赖:

{ pkgs }: {
  deps = [
    pkgs.python310
    pkgs.chromium
    pkgs.chromedriver
    # 其他项目所需依赖
  ];
}

2. 修改代码使用系统预装的Chromium和ChromeDriver

放弃ChromeDriverManager自动下载逻辑,直接调用Replit环境中通过nix安装的版本:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

# 配置Chrome运行选项
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # 采用新版无头模式,兼容性更强
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
# 指定系统中Chromium的二进制文件路径
options.binary_location = "/run/current-system/sw/bin/chromium"

# 指定系统中ChromeDriver的可执行路径
service = Service(executable_path="/run/current-system/sw/bin/chromedriver")

# 初始化WebDriver
driver = webdriver.Chrome(service=service, options=options)

# 原有业务逻辑保持不变
driver.get(f"file://{html_file_path}")
driver.implicitly_wait(3)  # 适当延长等待时间,确保元素加载完成
xpath = "/html/body/div/div[1]"
elembyxp = driver.find_element(By.XPATH, xpath)
elembyxp.screenshot(f"{image_file_path}")
driver.quit()

问题原因说明

  • 状态码127错误:自动下载的ChromeDriver对应的Chrome二进制文件缺少Replit环境所需的系统依赖,而nix预装的Chromium已配置好所有依赖,可直接稳定运行。
  • 驱动包找不到问题:Selenium Manager尝试下载的高版本ChromeDriver可能已从官方服务器移除,或与Replit环境不兼容,使用系统预装版本可彻底规避版本匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:00:27