кукловод в докере ведет себя иначе, чем тот же кукловод в местном - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь измерить ширину HTML-элемента.Я получаю разные значения в локальном puppeteer/chrome_headless и docker puppeteer/chrome_headless.

Шаги для воспроизведения:

1) Откройте консоль Chrome и вставьте приведенный ниже код.Это даст ширину элемента.

    var elem = document.createElement('span')
    document.body.appendChild(elem)
    elem.innerHTML="text to be measured for width"
    elem.style.fontSize="20px"
    elem.style.fontFamily="serif"
    console.log(a.getBoundingClientRect().width)

2) Запустите следующую команду для запуска безголового Chrome в Docker.

docker run -it --rm -p=0.0.0.0:9222:9222  --name=chrome-headless -v /tmp/chromedata/:/data alpeware/chrome-headless-trunk

3) Доступ к безголовому Chrome, запущенному в Docker, через любой браузер по адресу localhost:9222.Нажмите на показанную ссылку.Теперь вставьте тот же код в консоль.Ширина, которую он дает, отличается.

Мне нужен безголовый браузер в докере, чтобы дать тот же результат, что и у локального хрома.

1 Ответ

0 голосов
/ 01 июля 2019

Поскольку проблема заключается в измерении внешнего вида элемента, могу поспорить, что рассматриваемый элемент отображается по-разному в браузерах без заголовка и без заголовка.

Попробуйте явно указать размеры вашего окна просмотра в Puppeteer и убедитесь, что вы не используете другой пользовательский агент (скорее всего, вы используете тот же пользовательский агент).

//...
await page.setViewport({
  width: 640,
  height: 480,
  deviceScaleFactor: 1,
});
//...

...