1

Ich habe versucht, herauszufinden, wie man Headless Chrome in einem Docker Container laufen lassen. Dann habe ich this gefunden. Aber jetzt kann ich nicht herausfinden, wie ich meine Tests in diesem Container ausführen soll.Pupeeer zu Headless Chrome in einem Container

Kann jemand mir eine allgemeine Richtung geben, wo ich graben sollte, versuchte ich, durch Pupeeteer Dokumente zu schauen, konnte jedoch nichts finden. Vielleicht gibt es ein minimales Beispiel in der Wildnis, wo ich vielleicht Karma oder was auch immer verwenden kann, um Tests in einem Container auszuführen und Ergebnisse zu protokollieren.

Beachten Sie aber, dass ich Javascript außerhalb des Containers kompilieren/bündeln möchte und es nur zum Ausführen kompilierter/gebündelter Tests verwenden möchte.

Vielleicht möchte ich später den gleichen Ansatz verwenden, um auch meine Akzeptanztests auszuführen, aber dieses Mal, indem ich einen Webserver im Freien, möglicherweise in einem separaten Container, laufe.

Mein Endziel ist es, in Clojurescript geschriebene Tests laufen zu lassen, ich denke nicht, obwohl irgendjemand so etwas schon gemacht hat. Vielleicht hat jemand.

Antwort

0

Ich glaube, ich habe einen Plan skizziert:

  • zuerst müssen die Behälter laufen:

    docker run -it --rm -p=0.0.0.0:9222:9222 --name=chrome-headless \ 
    -v /tmp/chromedata/:/data alpeware/chrome-headless-trunk 
    
  • jetzt bei Chrome läuft, können Sie durch überprüfen http://localhost:9222 öffnen . Sie sollten dort eine einzelne Registerkarte sehen. Wir brauchen die websocketUrl für die Registerkarte zu finden, laufen:

    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"}] 
    
  • jetzt Sie Puppeteer verwenden können einige verrückte Sachen zu verbinden und zu tun:

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

Das ist alles schön, jetzt Aus all diesen Ziegeln werde ich "ein Haus bauen"

Verwandte Themen