由于浏览上下文而导致的Selenium在Docker中崩溃已被丢弃

时间:2020-01-08 02:13:08

标签: selenium docker selenium-webdriver docker-compose

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

我正在尝试使用Firefox和Geckodriver进行一些Python + Selenium测试,以在Ubuntu 18 Docker映像下运行。

我的docker-compose.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的输出,并且实际上没有显示内存使用情况,因此我不确定是由于内存不足而导致测试崩溃的原因。 / p>

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

我还尝试了不同版本的Firefox,从最新的71版本到较旧的ESR版本,以排除由于Firefox + Selenium + Geckodriver版本不兼容而造成的错误。否则,我会关注this compatibility table

是什么导致此错误,我该如何解决?

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,请运行docker容器并添加--shm-size

示例:

 --shm-size="2G"