Selenium 会话未创建:在 GUI 模式下通过 cron 运行时出现 DevToolsActivePort 文件不存在错误

问题描述 投票:0回答:1

我正在尝试在 cron 作业中使用 Google Chrome 运行 Selenium 脚本,而无需使用无头模式。当我在我的用户帐户下手动执行脚本时,一切正常。但是,当我通过 cron (从用户或 root)运行相同的脚本时,我收到以下错误:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally. (session not created: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) 

我尝试过的事情:

以用户身份手动运行脚本:完美运行。 为 root 和我的用户帐户配置 crontab,两种情况下都会出现相同的错误。 我确保脚本使用 options 对象而不是 chrome_options (因为它已被弃用)。

我需要 Chrome 以 GUI 模式运行(不是无头模式),但我无法让 cron 作业在不崩溃的情况下执行此操作。仅当通过 cron 触发脚本时才会出现该错误。

45 9 * * * /usr/bin/python3 /home/user/project/script.py >> /home/user/cron_log.txt 2>&1

任何有关如何解决此问题的建议将不胜感激。

python-3.x selenium-chromedriver
1个回答
0
投票

我相信这个问题的出现是因为 cron 作业在非 GUI 环境中运行,这会阻止 Chrome 在非无头模式下正常启动。

要解决此问题,您可以使用

Xvfb
提供虚拟显示:

  1. 安装

    Xvfb
    :(基于 Debian)

    sudo apt-get install xvfb
    
  2. 更新您的 Cron 作业以使用

    Xvfb

    45 9 * * * /usr/bin/xvfb-run /usr/bin/python3 /home/user/project/script.py >> /home/user/cron_log.txt 2>&1
    

此设置允许 Chrome 通过提供虚拟显示环境以非无头模式运行。

© www.soinside.com 2019 - 2024. All rights reserved.