当前位置: 首页 > 知识库问答 >
问题:

由于浏览上下文,Docker中的Selenium崩溃已被丢弃

易骁
2023-03-14

如何在Docker中运行基于硒的测试?

我正在尝试使用Firefox和Geckodriver在Ubuntu 18 Docker镜像下运行一些Python Selenium测试。

我的docker撰写。yml文件只是:

version: "3.5"
services:
  app_test:
    build:
      context: .
      shm_size: '4gb'
      mem_limit: 4096MB
      dockerfile: Dockerfile.test

不幸的是,大多数测试都会失败,出现以下错误:

selenium.common.exceptions.NoSuchWindowException: Message: Browsing context has been discarded

我能找到的少数提及此错误的搜索结果表明这是因为内存不足。我正在运行测试的服务器总内存为8GB,尽管我也在32GB的机器上进行了测试并收到了相同的错误。

我还添加了一个调用,在每次测试之前打印top的输出,它显示几乎没有内存使用,因此我不确定是什么原因导致测试由于内存不足而崩溃。

一些文章建议增加shm_size和mem_limit,但没有效果。

我还尝试了不同版本的火狐,从最新的71版本到旧的ESR版本,以排除火狐硒壁虎驱动程序不兼容版本导致的错误。否则我将遵循此兼容性表。

是什么导致了这个错误,我如何修复它?

共有1个答案

尉迟冯浩
2023-03-14

根本原因可能是RAM内存不足。

要修复它,请运行docker容器,添加shm size。

例子:

 --shm-size="2G"
 类似资料:
  • 问题内容: 我正在尝试使用量角器运行一个简单的测试脚本。 环境: 这是我的量角器配置文件。 这是我的测试脚本(todo-spec.js) 这是我的 node_modules / protractor / node_modules / webdriver-manager / selenium / 目录,如下所示: 使用进行测试时,出现以下错误。 任何帮助,将不胜感激。 问题答案: 可以使用以下配置解

  • 我正在编写一个程序,帮助我的客户从网站下载发票PDF,第一次使用。之后,程序Hibernate一定时间,醒来时开始搜索我的客户的电子邮件(使用S22 DLL),如果他找到某个电子邮件,则从电子邮件中提取链接并使用(第二次)。但这次我得到了一个例外 浏览上下文已被丢弃 我已经尽了一切可能,但最“震惊”的是,我在谷歌上找不到任何关于这个错误的东西,也没有在硒留档上找到任何东西。 我不明白这是什么意思

  • 这是我的全部剧本 运行时产生: 我刚刚经历了更新的一切: 壁虎河:0.29.0 我已经搜索了几个关于同一个错误的问题,但仍然完全不知道这里的问题是什么。我几乎什么都没做。这是Selenium Python的开始示例,或者至少是开始示例的开始。

  • 我今天运行了一些我用Selenium-Python开发的脚本。他们工作得很好。当我关上窗户的时候 我正在运行Selenium 2.53 文件“C:\ python 34 \ lib \ site-packages \ selenium \ web driver \ Firefox \ Firefox _ binary . py”,第98行,in _wait_until_connectable引发W

  • 主要目的是在一个容器中运行多个chrome浏览器(9个浏览器)。 我有一个hub&node设置,容器中有多个浏览器,可以在一个chrome node容器中运行。我用下面的docker命令创建了两个容器: 要创建集线器容器:dockerrun-d-p4445:4444--名称为selenium_hub selenium/hub

  • 我正在尝试使用量角器运行一个简单的测试脚本。 环境: 这是我的量角器配置文件。 这是我的测试脚本(todo-spec.js) 这是我的node_modules/量角器/node_modules/webdriver-Manager/selenium/目录如下所示: 当我使用/path/to/gradutor conf.js运行测试时,出现了下面提到的错误。 任何帮助都将不胜感激。