Tome una captura de pantalla del sitio web abierto en script de python

Necesito escribir un script en python que abra un sitio web y cuando el sitio esté completamente abierto, tomará una captura de pantalla del sitio abierto.

Yo escribí algo como esto:

import webbrowser import wx wx.App() link = "http://sofes.miximages.com/browser/b(link) screen = wx.ScreenDC() size = screen.GetSize() bmp = wx.EmptyBitmap(size[0], size[1]) mem = wx.MemoryDC(bmp) mem.Blit(0, 0, size[0], size[1], screen, 0, 0) del mem bmp.SaveFile('screenshot.png', wx.BITMAP_TYPE_PNG) 

Solo abre una nueva pestaña en Firefox pero no toma una captura de pantalla 🙁

Quiero que la solución sea multiplataforma. Gracias por cualquier ayuda:)

EDITAR:

El principal problema aquí es que el script debe tomar una foto ANTES de que mi página web esté completamente abierta. ¿Cómo resolver ese problema?

Esta solución es bastante multiplataforma, pero si está intentando mostrar un poco de una página web abierta en un escritorio con menús / barras de herramientas, etc. no es lo que desea.

Podría usar SeleniumHQ para automatizar un navegador de su elección, hacer que ese navegador represente la página y luego obtener la imagen completa de la página representada, es decir, no solo una captura de pantalla de la parte de la página que se muestra en la pantalla. Entonces podrías recortar eso en consecuencia.

Creo que necesitas diferentes soluciones para diferentes sistemas operativos. Utilice sys.platform para averiguar en qué plataforma está. El rest lo tiene que averiguar usted mismo, pero una rápida búsqueda en Internet reveló:

  • En sistemas Linux, puede tomar una captura de pantalla como se describe aquí:

Tome una captura de pantalla a través de un script de python. [Linux]

  • En sistemas Windows, puede basar su solución en esta respuesta:

La forma más rápida de tomar una captura de pantalla con python en windows

  • En sistemas Mac, esto ayudará a:

Tome la captura de pantalla en Python en Mac OS X

De acuerdo con esta pregunta , deberías poder usar ImageGrab para tomar una captura de pantalla. Dado que ImageGrab utiliza PIL, esto debe ser multiplataforma. Aquí hay un código de ejemplo para ponerte en camino.

Espero que esto ayude