如何在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。
是什么导致此错误,我该如何解决?
答案 0 :(得分:1)
根本原因可能是RAM内存不足。
要解决此问题,请运行docker容器并添加--shm-size
。
示例:
--shm-size="2G"