docker Селеноид chrome дает время ожидания получения сообщения от рендерера: 300.000 - PullRequest
0 голосов
/ 23 апреля 2020

Я получаю эту ошибку при выполнении длинных тестовых случаев. в основном это происходит с Jenkins.

ОС: Ubuntu 18.04

Docker Версия: 19.03.8

Docker Версия API: 1.40

Нет Из контейнеров: 4

ОЗУ: 30 ГБ

Процессор: i7 9700k

браузеры. json

    {
    "chrome": {
        "default": "81.0",
        "versions": {
            "81.0": {
                "image": "selenoid/vnc:chrome_81.0",
                "port": "4444",
                "path": "/",
                "shmSize" : 1068435456
            },
            "80.0": {
                "image": "selenoid/vnc:chrome_80.0",
                "port": "4444",
                "path": "/",
                "shmSize" : 1068435456
            },
            "79.0": {
                "image": "selenoid/vnc:chrome_79.0",
                "port": "4444",
                "path": "/",
                "shmSize" : 1068435456
            }
        }
    }
}

Вывод ошибки:

  { TimeoutError: timeout: Timed out receiving message from renderer: 300.000
    matchdciprotractor_1   |   (Session info: chrome=81.0.4044.92)
    matchdciprotractor_1   |   (Driver info: chromedriver=81.0.4044.69 (6813546031a4bc83f717a2ef7cd4ac6ec1199132-refs/branch-heads/4044@{#776}),platform=Linux 5.3.0-46-generic x86_64)
    matchdciprotractor_1   |     at Object.checkLegacyResponse (/protractor/node_modules/selenium-webdriver/lib/error.js:546:15)
    matchdciprotractor_1   |     at parseHttpResponse (/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
    matchdciprotractor_1   |     at doSend.then.response (/protractor/node_modules/selenium-webdriver/lib/http.js:441:30)
    matchdciprotractor_1   |     at process._tickCallback (internal/process/next_tick.js:68:7)
    matchdciprotractor_1   | From: Task: WebDriver.switchTo().defaultContent()
    matchdciprotractor_1   |     at thenableWebDriverProxy.schedule (/protractor/node_modules/selenium-webdriver/lib/webdriver.js:807:17)
    matchdciprotractor_1   |     at TargetLocator.defaultContent (/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1798:25)
    matchdciprotractor_1   |     at Function.<anonymous> (/protractor/src/elements/utils.ts:112:38)
    matchdciprotractor_1   |     at step (/protractor/dist/src/elements/utils.js:44:23)
    matchdciprotractor_1   |     at Object.next (/protractor/dist/src/elements/utils.js:25:53)
    matchdciprotractor_1   |     at /protractor/dist/src/elements/utils.js:19:71
    matchdciprotractor_1   |     at new Promise (<anonymous>)
    matchdciprotractor_1   |     at __awaiter (/protractor/dist/src/elements/utils.js:15:12)
    matchdciprotractor_1   |     at Function.Utils.doSwitch (/protractor/dist/src/elements/utils.js:179:16)
    matchdciprotractor_1   |     at Function.<anonymous> (/protractor/src/elements/utils.ts:98:20) name: 'TimeoutError', remoteStacktrace: '' }

1 Ответ

0 голосов
/ 27 апреля 2020

Попробуйте использовать следующую конфигурацию. Монтируйте папки хоста в контейнер в соответствии с вашими потребностями.

Каждый узел ограничен одним браузером. Также не забудьте предоставить правильные возможности из тест-фреймворка. как: --disable-gpu --no-sandbox

Также вы можете поэкспериментировать с --disable-dev-shm-using

Не забудьте применить правильные возможности селеноидов:

Пример из машинописного текста, вы можете добавить их ко всем языкам программирования.

'selenoid:options': {
                version: '81',
                enableVNC: false,
                enableVideo: false,
                enableLog: false, // save session logs
                videoScreenSize: '1920x1080',
                videoFrameRate: 24,
                videoCodec: 'mpeg4',
                screenResolution: '1920x1080x24'
            },

Docker -Составить:

version: '3'
services:
  selenoid:
    image: "aerokube/selenoid:1.9.2"
    container_name: selenoid
    network_mode: bridge
    ports:
      - "4444:4444"
    volumes:
      - "./:/etc/selenoid/:ro"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./video/:/opt/selenoid/video/"
      - "./logs/:/opt/selenoid/logs/"
    environment:
    command: ["-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs", "-limit", "3", "-timeout", "5m"]
  selenoid-ui:
    image: "aerokube/selenoid-ui:1.8.0"
    container_name: selenoid-ui
    network_mode: bridge
    links:
      - selenoid
    ports:
      - "9090:9090"
    command: ["--selenoid-uri", "http://selenoid:4444", "--listen", ":9090"]

Браузеры. json

{
    "chrome": {
        "default": "81",
        "versions": {
            "81": {
                "image": "selenoid/chrome:81.0",
                "env": [
                    "NODE_MAX_SESSION", "1",
                    "NODE_MAX_INSTANCES", "1",
                    "SCREEN_WIDTH", "1920",
                    "SCREEN_HEIGHT", "1080",
                    "SCREEN_DEPTH", "24",
                    "DBUS_SESSION_BUS_ADDRESS", "/dev/null"
                ],
                "port": "4444",
                "tmpfs": {
                    "/tmp": "size=512m"
                }
            },
            "81_vnc": {
                "image": "selenoid/vnc:chrome_81.0",
                "env": [
                    "NODE_MAX_SESSION", "1",
                    "NODE_MAX_INSTANCES", "1",
                    "SCREEN_WIDTH", "1920",
                    "SCREEN_HEIGHT", "1080",
                    "SCREEN_DEPTH", "24",
                    "DBUS_SESSION_BUS_ADDRESS", "/dev/null"
                ],
                "port": "4444",
                "tmpfs": {
                    "/tmp": "size=512m"
                }
            }
        }
    }
}
...