如何解决 Chrome 显示“噢,啪!”的问题页面,同时通过 ChromeDriver 和 Selenium 通过 Python 3 执行测试

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

运行大约一个小时后,我的 selenium 浏览器将显示“Aw, Snap!”页面,我无法从控制台以任何方式与浏览器交互,我必须关闭浏览器并重新启动我的脚本。

对此有解释或简单的解决办法吗?

Aw Snap page display

python-3.x selenium google-chrome selenium-chromedriver chromium
2个回答
5
投票

此错误屏幕...

Aw, Snap!

...意味着 ChromeDriver 在加载新的 浏览上下文Chrome 浏览器 会话时遇到问题。


原因

您在运行基于 Chrome 浏览器Selenium 测试约一个小时时看到此错误,此问题可能是由于

/dev/shm
的大小减小(即
/dev/shm
空间不足)而发生。举个例子:

mount -o remount,size=64M /dev/shm

理想情况下应该是:

mount --bind /tmp/ /dev/shm/

在 Docker 环境中运行 Chromium 时,

64M
大小几乎处于缩小状态。


深潜

根据问题 522853 中的讨论:Linux:Chrome/Chromium SIGBUS/哇,Snap!在小 /dev/shm 上:

Linux 上的
  • util_posix.cc:GetShmemTempDir
     尝试始终将 
    /dev/shm
     用于不可执行内存。
  • 所需的
  • /dev/shm
    大小很大程度上取决于渲染器的数量、屏幕分辨率等。
  • 有时,您可能会因为
  • 大型网络应用程序而耗尽内存,甚至在/dev/shm
    中空间不足之前
    
  • 有时,一些 Docker 容器决定默认严格限制其共享内存的大小,这对于某些工作负载来说可能没问题,并且可能会阻止任何容器占用所有内存。
这个问题在以下讨论中进行了详细的分析和讨论:

  • 问题 736452:添加使用 /tmp 而不是 /dev/shm 的选项
  • 问题 715363:当 /dev/shm 太小时,Chrome 崩溃/无法加载,并且无法覆盖位置

解决方案

这个问题最终通过

commit / revision 得到解决,修复了 CreateAnonymousSharedMemory()

 在返回 fd 时不泄漏 FILE。

CreateAnonymousSharedMemory() 被修改为以文件描述符而不是 FILE 的形式返回可写内存句柄。由于 POSIX 不提供在不关闭底层文件描述符的情况下拆除 FILE 的标准方法,因此这是通过泄漏 FILE 来实现的。 我们现在提供

CreateAndOpenFdForTemporaryFileInDir()

,以避免将临时文件描述符包装到 FILE 中。


结论

确保:

  • /dev/shm/
     安装有足够的内存。
  • Selenium 已升级至当前级别 版本 3.141.59
  • ChromeDriver 已更新至当前 ChromeDriver v79.0.3945.36 级别。
  • Chrome 已更新至当前 Chrome 版本 79.0 级别。 (根据 ChromeDriver v78.0 发行说明 通过
  • IDE
  • 清理您的项目工作区,并仅使用所需的依赖项重建您的项目。
  • 如果您的基本
  • Web Client 版本太旧,请通过 Revo Uninstaller 将其卸载,并安装最新的 GA 和发布版本的 Web Client
  • 进行
  • 系统重新启动
  • 非 root
     用户身份执行您的 
    @Test

0
投票
我有同样的问题,我通过在函数内每 30 分钟自动重新启动一次驱动程序来解决这个问题。

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