我需要使用 Chrome 在 docker 内启动 Puppeteer headfull (headless false),但出现相同的错误:“无法启动 chrome”。
我安装了所有依赖项,但它随时都会崩溃
Error: Failed to launch chrome!
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
at onClose (/app/node_modules/puppeteer/lib/Launcher.js:339:14)
at ChildProcess.helper.addEventListener (/app/node_modules/puppeteer/lib/Launcher.js:329:60)
at emitTwo (events.js:131:20)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM node:8
RUN apt-get update && apt-get install -yq --no-install-recommends tightvncserver xfce4 xfce4-goodies apt-utils gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates …Run Code Online (Sandbox Code Playgroud) 为了检查在 docker 镜像中运行的 selenium 测试,我尝试设置一个 VNC 来验证测试期间发生的情况。
我正在按照此处提出的建议创建一个新的 docker 映像,并在 中添加以下附加行Dockerfile:
RUN apt-get install -y x11vnc
RUN mkdir ~/.vnc
RUN x11vnc -storepasswd 1234 ~/.vnc/passwd
Run Code Online (Sandbox Code Playgroud)
然后我使用以下命令启动了 docker 镜像:
docker run -p 5900 --rm -it --entrypoint /bin/bash selenium-tests
Run Code Online (Sandbox Code Playgroud)
并开始krdc作为我的 VNC 查看器。那么现在怎么办?
我在krdc. 也许我错过了什么?我是否必须在 docker 中明确启动 vnc 代码?我需要向docker命令传递额外的参数吗?
我正在尝试运行 non-headless puppeteer 来测试管道中的 chrome 扩展。
当我用谷歌搜索这个话题时,我发现很多人能够让无头木偶操纵者在管道上工作,但由于某种原因,我无法让它与非无头人偶一起工作。
Puppeteer 故障排除文档说 TravisCI 是可能的,所以管道也应该是可能的?
我尝试了许多不同的 docker 图像,但似乎没有一个起作用。这是我目前的设置:
image: node:9
pipelines:
branches:
staging:
- step:
script:
- node -v
- yarn -v
- yarn install
- apt update && apt install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
- apt-get install -y …Run Code Online (Sandbox Code Playgroud) javascript continuous-integration automated-tests bitbucket-pipelines puppeteer
我试过:
const browser = await puppeteer.launch({args: ['--enable-webrtc-stun-origin=false', '--enforce-webrtc-ip-permission-check=false']});
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。接下来我尝试:
const targets = await browser.targets();
const backgroundPageTarget = targets.find(target => target.type() === 'background_page');
const backgroundPage = await backgroundPageTarget.page();
await backgroundPage.evaluateevaluateOnNewDocument(() => {
chrome.privacy.network.webRTCIPHandlingPolicy.set({
value: "default_public_interface_only"
});
});
Run Code Online (Sandbox Code Playgroud)
但得到:
类型错误:无法读取未定义的属性“页面”
编辑:需要 {headless: true} 的解决方案。