Es posible agarrar una captura de pantalla de una ventana abierta usando las Herramientas de Desarrollo de Chrome remote debugger?

Por ejemplo, me estoy conectando el remoto puerto de depuración y tengo este
el código que aparece una ventana vacía:

   private void sendWindowPop(int width, int height) throws
IOException {
       hsc.send("{\"method\": \"Runtime.evaluate\", \"id\": "
               + hsc.nextInt()
               + ", \"params\": {"
               + "\"expression\":
\"window.open('about:blank','name','toolbar=0,scrollbars=0,"
               + "location=0,status=0,menubar=0,resizable=0,width="
               + width
               + ",height="
               + height
               + "');\""
               + "}}");

(hsc es mi conexión con el depurador en http://localhost:9222)

Entonces, me carga mi URL de destino con esto:

    private void loadPage(String uriString) throws IOException {
       hsc.send("{\"method\": \"Page.open\", \"id\": " +
       hsc.nextInt() + ", \"params\": {\"url\": \"" + uriString + "\"}}");
       hsc.waitFor(ChromeNotifications.PAGE_LOADEVENTFIRED, DEFAULT_TIMEOUT_MILLIS);
   }

El código anterior funciona bien, y la primera que aparece una ventana y, a continuación, carga el
Dirección URL. Idealmente, la siguiente cosa que me gustaría hacer es tomar una captura de pantalla
de la carga de la página web. Ahora, estos explorador de windows pop en un
Xvfb de escritorio virtual, y puedo usar ImageMagick la herramienta de importación de agarrar
una captura de pantalla de la ventana de destino, pero sólo si es en la
primer plano
.

Esto es un problema, ya que esta aplicación está diseñada para ejecutarse en
en paralelo con varias ventanas apareciendo en el escritorio virtual. Cualquier
ventana de superposición de mi ventana se me acaba de dar un negro
captura de pantalla, ya que Xfvb sólo hace lo que es visible.

También he mirado en la referencia de la API, chrome.las pestañas.captureVisibleTab. No hubo suerte, no captura de lo que no es visible.

Hay una manera, utilizando el depurador remoto, para tomar una captura de pantalla de un
abrir la ventana?

(para fines de referencia, mi ImageMagick comando para importar es esto)

    DISPLAY=:0.0 import -window "Google - Chromium" screenshot.png

Donde puedo abrir la URL http://www.google.com en mi cromo navegador usando loadPage() anterior. Funciona muy bien como largo como el “Google – Cromo” de la ventana que aparece es libre de obstrucciones y tiene el foco. Caída de una ventana a otra parte de esto, y tengo un gran área negra que no se ha representado.

Gracias!

OriginalEl autor AWT | 2012-01-27

3 Comentarios

  1. 4

    Remoto de Chrome Depuración del Protocolo de ahora es compatible con el Página.captureScreenshot función

    Aquí es un ejemplo en el café-script

    screenshot: (name, callback)=>
        safeName = name.replace(/[^()^a-z0-9._-]/gi, '_') + ".png"
        png_File = "./_screenshots".append_To_Process_Cwd_Path().folder_Create()
                                   .path_Combine(safeName)
    
        @chrome._chrome.Page.captureScreenshot (err, image)->
          require('fs').writeFile png_File, image.data, 'base64',(err)->
             callback()

    (fragmento de
    https://github.com/TeamMentor/TM_4_0_Design/blob/Issue_80_Jade_Cleanup/QA/API/QA-TM_4_0_Design.coffee#L54)

    El enlace está muerto : (¿Cómo acceder / crear el Page objeto?
    Hola, parece que la rama ya no está más allí echa un vistazo a github.com/TeamMentor/TM_4_0_Design/blob/… y github.com/TeamMentor/TM_4_0_Design/blob/…
    Hay algo útil aquí para alguien que sólo quiere pegar un comando en el panel de la consola, o pulse una tecla de acceso directo?

    OriginalEl autor Dinis Cruz

  2. 0

    Probar el Aviario De Captura De Pantalla

    De verificación de este sitio:

    http://www.webdesignerdepot.com/2011/08/25-must-have-chrome-extensions-for-web-designers-and-developers/

    Hola Adel, miré en el Aviario y tiene algunas opciones interesantes y una API pública, pero la API está orientado a la edición de imagen. Yo no veo nada que me permite tomar una captura de pantalla mediante programación, así que mi búsqueda continúa. Gracias!
    Espero que hayas encontrado lo que estabas buscando!
    He encontrado algunas cosas interesantes, pero nada hizo exactamente lo que yo estaba buscando. En lugar de eso, estoy en el proceso de escribir mi propia. Me deseo suerte! 🙂
    Si usted necesita ayuda, usted siempre puede venir aquí de nuevo 🙂

    OriginalEl autor Adel Boutros

  3. 0

    Si usted necesita Java solución basada en el uso de cdp4j para capturar página completa pantalla.

    public static void main(String[] args) throws IOException, InterruptedException {
        SessionFactory factory = new Launcher().launch();
    
        Path file = createTempFile("screenshot", ".png");
    
        try (Session session = factory.create()) {
            session.navigate("https://webfolder.io");
            session.waitDocumentReady();
            byte[] data = session.captureScreenshot();
            write(file, data);
        }
    
        if (isDesktopSupported()) {
            getDesktop().open(file.toFile());
        }
    
        factory.close();
    }

    Screenshot.java

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here