容器中的 Puppeteer 不是无头 Chrome
Pupeeteer to headless Chrome in a container
我试图弄清楚如何在 docker 容器中 运行 无头 Chrome。然后我找到了this。
但现在我不知道如何 运行 我在那个容器中的测试。
谁能给我一些我应该在哪里挖掘的大体方向,我试着查看 Pupeeteer 的文档,但找不到任何东西。
也许在野外有一个最小的例子,我可以在其中使用 Karma 或其他任何东西在容器中进行 运行 测试并记录结果。
请注意,尽管我想 compile/bundle javascript 在容器外部,并仅使用它在其中执行 compiled/bundled 测试。
也许以后我也想使用相同的方法来 运行 我的验收测试,但这次 运行 在外面设置一个网络服务器,可能在一个单独的容器中。
我的最终目标是能够 运行 一堆用 Clojurescript 编写的测试,我认为虽然还没有人做过类似的事情。也许有人有。
我想我已经制定了一个游戏计划:
首先,需要运行容器:
docker run -it --rm -p=0.0.0.0:9222:9222 --name=chrome-headless \
-v /tmp/chromedata/:/data alpeware/chrome-headless-trunk
现在Chrome是运行ning,可以打开http://localhost:9222查看。您应该会看到一个选项卡。
我们需要找到该选项卡的 websocketUrl,运行ning:
curl http://localhost:9222/json
# should get you something like this:
[{"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe",
"id": "2f428ea1-7229-484c-b7c7-57ef2f098ffe",
"title": "Google",
"type": "page",
"url": "https://www.google.com/",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe"}]
现在您可以使用 Puppeteer 进行连接并做一些疯狂的事情:
const puppeteer = require('puppeteer');
puppeteer.connect({
browserWSEndpoint: "ws://localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe"
}).then (async browser => {
const page = await browser.newPage();
await page.goto('https://www.google.com');
;; you just opened another tab
});
一切都很好,现在我要用这些积木"build a house"
我试图弄清楚如何在 docker 容器中 运行 无头 Chrome。然后我找到了this。 但现在我不知道如何 运行 我在那个容器中的测试。
谁能给我一些我应该在哪里挖掘的大体方向,我试着查看 Pupeeteer 的文档,但找不到任何东西。 也许在野外有一个最小的例子,我可以在其中使用 Karma 或其他任何东西在容器中进行 运行 测试并记录结果。
请注意,尽管我想 compile/bundle javascript 在容器外部,并仅使用它在其中执行 compiled/bundled 测试。
也许以后我也想使用相同的方法来 运行 我的验收测试,但这次 运行 在外面设置一个网络服务器,可能在一个单独的容器中。
我的最终目标是能够 运行 一堆用 Clojurescript 编写的测试,我认为虽然还没有人做过类似的事情。也许有人有。
我想我已经制定了一个游戏计划:
首先,需要运行容器:
docker run -it --rm -p=0.0.0.0:9222:9222 --name=chrome-headless \ -v /tmp/chromedata/:/data alpeware/chrome-headless-trunk
现在Chrome是运行ning,可以打开http://localhost:9222查看。您应该会看到一个选项卡。 我们需要找到该选项卡的 websocketUrl,运行ning:
curl http://localhost:9222/json # should get you something like this: [{"description": "", "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe", "id": "2f428ea1-7229-484c-b7c7-57ef2f098ffe", "title": "Google", "type": "page", "url": "https://www.google.com/", "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe"}]
现在您可以使用 Puppeteer 进行连接并做一些疯狂的事情:
const puppeteer = require('puppeteer'); puppeteer.connect({ browserWSEndpoint: "ws://localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe" }).then (async browser => { const page = await browser.newPage(); await page.goto('https://www.google.com'); ;; you just opened another tab });
一切都很好,现在我要用这些积木"build a house"