1

我想知道如何在Docker容器中運行無頭Chrome瀏覽器。然後我發現this。 但現在我無法弄清楚如何在該容器中運行我的測試。在容器中使用無頭Chrome瀏覽器的腳手架

有人可以給我一些大方向,我應該在哪裏挖,我試着通過Pupeeteer的文檔尋找,但找不到任何東西。 也許在野外有一個最小的例子,我可以使用Karma或其他方法在容器中運行測試並記錄結果。

請注意,雖然我想在容器外編譯/捆綁javascript,並且只是爲了在其中執行編譯/捆綁測試。

也許以後我想用同樣的方法來運行我的驗收測試,但這次通過在外部運行一個web服務器,可能在一個單獨的容器中運行。

我的最終目標是能夠運行一堆用Clojurescript編寫的測試,我不認爲有人做過類似的事情。也許有人有。

回答

0

我想我已經勾勒出一個比賽計劃:

  • 首先,需要運行容器:

    docker run -it --rm -p=0.0.0.0:9222:9222 --name=chrome-headless \ 
    -v /tmp/chromedata/:/data alpeware/chrome-headless-trunk 
    
  • 現在在Chrome運行

    ,您可以通過打開http://localhost:9222檢查。你應該看到那裏有一個標籤。 我們需要找到該標籤的websocketUrl,運行:

    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"}] 
    
  • 現在你可以用木偶來連接,並做一些瘋狂的事情:

    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 
    }); 
    

這都是很好的,現在在所有這些磚塊中,我要「蓋房子」

相關問題