es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener captura de pantalla en Python del elemento de la página activa.

Quiero tomar capturas de pantalla de los elementos de la página activa de Django. He investigado sobre Selenium y Playwright, pero abren las páginas en un nuevo navegador. La página en la que quiero tomar la captura tiene información dinámica y está cambiando constantemente, por lo que no es apropiado tomar una captura de pantalla abriéndola en una nueva página. Cada usuario ingresará información diferente en la página abierta y tomará una captura de pantalla del elemento relevante.

Esto es lo que quiero hacer:

1- Tomar captura de pantalla del div con JS (OK)

2- Enviar una solicitud POST a la URL de Django con JS a PYTHON (Necesito ayuda -,- )

3- Y enviar esta imagen a Slack (OK)

Capturando el div mediante html2canvas:

function capture() {
    html2canvas(document.getElementById("main"), {
        letterRendering: 1,
        allowTaint: true,
        useCORS: true,
    })
        .then(function (canvas) {
            document.getElementById("result").src = canvas.toDataURL("image/png", 0.5);
        })
        .catch((e) => {
            alert(e);
        });
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para enviar una solicitud POST a una URL de Django con JavaScript, puedes utilizar la función fetch. Aquí tienes un ejemplo:

    fetch('/path/to/your/url/', {
       method: 'POST',
       body: JSON.stringify({image: canvas.toDataURL('image/png')}),
       headers: {
         'Content-Type': 'application/json'
       }
    })
    

    En este ejemplo, reemplaza /path/to/your/url/ con la URL real a la que deseas enviar la solicitud. La parte JSON.stringify({image: canvas.toDataURL('image/png')}) envía los datos de imagen codificados en base64 al servidor en formato JSON. Puedes añadir otros datos a este objeto según sea necesario. Por último, el objeto headers especifica el tipo de contenido.

    Ten en cuenta que deberás manejar esta solicitud POST en el lado de Django, probablemente utilizando una vista que espere datos JSON y guarde la imagen en un archivo o en una base de datos.

Comments are closed.