Как вы запускаете тесты на основе Selenium внутри Docker?
Я пытаюсь получить некоторые тесты Python + Selenium, которые используют Firefox и Geckodriver, для запуска под Ubuntu 18 Docker image.
Мой 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
Несколько Результаты поиска, которые я могу найти с упоминанием этой ошибки, указывают на то, что это связано с нехваткой памяти. Сервер, на котором я запускаю тесты, имеет 8 ГБ общей памяти, хотя я также тестировал на компьютере с 32 ГБ и получил ту же ошибку.
Я также добавил вызов, чтобы напечатать вывод top
перед каждый тест, и он показывает, что использование памяти практически не используется, поэтому я не уверен, что вызвало бы тест sh из-за нехватки памяти.
В некоторых статьях предлагалось добавить строки shm_size и mem_limit, но они не имели никакого эффекта.
Я также пробовал разные версии Firefox, от самой последней версии 71 до более старых выпусков ESR, чтобы исключить ошибку из-за несовместимых версий Firefox + Selenium + Geckodriver. В противном случае я следую этой таблице совместимости .
Что вызывает эту ошибку и как ее исправить?