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

服务器nohup运行Selenium脚本报错问题求助

问题排查与解决方案

针对服务器nohup运行Selenium脚本时出现的NoSuchWindowException、WebDriverException(DevTools断开)问题,结合Chrome/ChromeDriver 110.0.5481.100环境,以下是具体排查方向和解决办法:

一、替换Headless模式参数

旧版--headless参数在部分服务器环境下存在稳定性缺陷,改用新版无头模式参数,并指定窗口大小避免页面加载异常:

options.add_argument('--headless=new')  # 替换原--headless参数
options.add_argument('--window-size=1920,1080')  # 固定窗口尺寸,适配页面渲染

二、修正用户代理(UA)

当前使用的UA对应Chrome 81,与实际运行的Chrome 110版本不匹配,可能被目标网站拦截导致页面加载失败,替换为对应版本的UA:

options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.100 Safari/537.36")

三、补充稳定性参数

添加服务器环境下Chrome运行的必要参数,解决资源限制和连接问题:

options.add_argument('--disable-dev-shm-usage')  # 规避服务器/dev/shm空间不足导致的崩溃
options.add_argument('--disable-gpu')  # 无头模式下禁用GPU加速
options.add_argument('--remote-debugging-port=9222')  # 固定调试端口,避免端口冲突
options.add_argument('--disable-extensions')  # 禁用扩展,减少运行干扰

四、优化脚本运行配置

  1. nohup启动命令:确保运行时输出日志并正确继承环境变量:
    nohup python3 your_script.py > selenium_run.log 2>&1 &
    
  2. chromedriver路径:使用绝对路径替代相对路径,避免nohup运行时路径解析错误:
    from pathlib import Path
    chromedriver_path = str(Path(__file__).resolve().parent / "chromedriver")
    serv = Service(chromedriver_path)
    

五、添加页面加载等待

服务器网络延迟可能导致页面未加载完成就执行后续操作,添加显式等待确保页面就绪:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver.get("any_link")
# 等待页面标题加载完成(可替换为关键元素的等待条件)
WebDriverWait(driver, 15).until(EC.title_is("预期页面标题"))

六、检查系统资源

使用top或htop命令查看服务器CPU、内存负载,Chrome Headless运行需要足够资源,资源不足会导致进程意外崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:17:48