【问题标题】:How to deal with selenium + chromedriver producing core dumps?如何处理 selenium + chromedriver 产生核心转储?
【发布时间】:2022-08-12 08:08:33
【问题描述】:

我有一个python 程序在我的Linux 服务器上使用chrome 浏览器,有时它会在max retries exceeded 的行中引发错误,这使得浏览器由于某种原因无法运行(甚至无法获取页面源) .这很好,因为在这种情况下,我可以执行 driver.stop() 并从头开始重新启动它。然而,在某些时候core.xxx 文件开始出现在程序的目录中,并迅速填满了我为项目所拥有的所有内存。此外,我注意到在运行了一些类似这样的进程几个小时后仍在运行:

root     32701  0.0  0.0      0     0 ?        Z    12:38   0:00 [chrome] <defunct>
root     32702  0.0  0.0      0     0 ?        Z    09:43   0:00 [cat] <defunct>
root     32703  0.0  0.0      0     0 ?        Z    09:43   0:00 [cat] <defunct>
root     32704  0.0  0.0      0     0 ?        Z    09:43   0:00 [chrome] <defunct>
root     32705  0.0  0.0      0     0 ?        Z    09:43   0:00 [chrome] <defunct>
root     32707  0.0  0.0      0     0 ?        Z    09:43   0:00 [chrome_crashpad] <defunct>

所以,问题是:我如何阻止核心转储出现以及如何删除这些过程,因为我当前的设置最大化了磁盘空间和 RAM。

标签: python python-3.x selenium selenium-chromedriver


【解决方案1】:

这些错误运行进程...

root     32701  0.0  0.0      0     0 ?        Z    12:38   0:00 [chrome] <defunct>
root     32702  0.0  0.0      0     0 ?        Z    09:43   0:00 [cat] <defunct>
root     32703  0.0  0.0      0     0 ?        Z    09:43   0:00 [cat] <defunct>
root     32704  0.0  0.0      0     0 ?        Z    09:43   0:00 [chrome] <defunct>
root     32705  0.0  0.0      0     0 ?        Z    09:43   0:00 [chrome] <defunct>
root     32707  0.0  0.0      0     0 ?        Z    09:43   0:00 [chrome_crashpad] <defunct>

...看来您正在执行测试root用户。


拇指规则

Chrome 在启动期间崩溃的一个常见原因是将 Chrome 运行为root用户 (administrator) 在 Linux 上。虽然可以通过在创建 WebDriver 会话时传递 --no-sandbox 标志来解决此问题,但不支持并且强烈建议不要使用此类配置。您需要将环境配置为以普通用户身份运行 Chrome。


解决方案

一个直接的解决方案是将您的测试作为non-root / non-admin用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多