javascript - samsung - Captura de pantalla del contenido del navegador(sitio web)
porque no puedo hacer captura de pantalla en mi celular (7)
Muchas combinaciones de navegador, versión y plataforma de os
Para capturar capturas de pantalla de páginas web con un navegador y una versión específicos, se necesita un marco que pueda iniciarse, ejecutarse y capturarse en todos estos navegadores. Además, la pregunta no especificó si también se requiere para plataformas específicas en combinación con dichos navegadores y versiones, como en OSX, Windows, Linux, Android, etc. diferentes versiones de estas plataformas aumentarán aún más las combinaciones posibles.
- Debería configurar y mantener estos navegadores
- Encuentre o cree un marco para conducirlos, Selenium probablemente sea su mejor opción
- Supere la falta de soporte en Selenium para ciertas combinaciones de navegador / sistema operativo
- Una infraestructura que gestione esto y expone como en una buena API para su uso
Sin embargo, existe una solución existente o una solución relacionada para esto, por ejemplo:
En cuanto a obtener capturas de capturas de pantalla en navegador específico, versión, plataforma, etc.
this es gratis y tiene un gran conjunto de combinaciones de navegadores, aunque no está muy claro si puedes acceder a él mediante programación.
Hacer esto simplemente llamando y API existente
crossbrowsertesting.com es un servicio comercial (prueba gratuita) que parece satisfacer todos los requisitos.
Tiene la tecnología que puede hacer esto
http://usersnap.com es compatible con muchos navegadores, tanto de escritorio como móviles, y ha trabajado mucho para obtener una captura de pantalla perfecta en píxeles en los servidores, siendo idéntica a lo que el usuario vería en su entorno.
Los ingenieros se centran en la solución como requisito ...
Como es típico para nosotros los tipos de ingeniería, nos quedamos estancados en cómo implementar una solución específica. No está claro por la pregunta qué problema resolverán estas capturas de pantalla, es decir, el requisito subyacente. Si eso se supiera, tal vez haya otros enfoques más simples disponibles.
Mi objetivo es tener una imagen de un sitio web (sí, tan simple como eso). Sé que hay herramientas como html2canvas . Sin embargo, no quiero que el navegador del cliente muestre la captura de pantalla.
Una razón es que utilizo una extensión de Chrome con una vista webview que esencialmente se comporta como un iFrame
. Por razones de seguridad, no funciona una captura de pantalla para un sitio web que contiene un iFrame
.
También sé que están trabajando en la capacidad de admitir de forma nativa capturas de pantalla de sitios web, pero quiero una solución de navegador cruzado y no depender de la posibilidad del navegador. Todo esto sucede en un servidor, por lo que debe ser ejecutable a través de la línea de comandos.
Lo que estoy haciendo ahora es:
- Abre el navegador a través de la línea de comando
- Cambiar el foco a la ventana del navegador a través de la línea de comando
- Haga una captura de pantalla (captura de pantalla en Mac, scrot en Linux) a través de la línea de comando
Hacerlo en este nivel básico tiene la desventaja de que la imagen contiene barras de estado, cosas del complemento del navegador, etc. De hecho, solo quiero tener el contenido del sitio web real sin todo este material específico de la aplicación.
- La peor solución sería codificar la posición 0 | 0 del contenido relativo a la ventana para cada navegador . Esto es una mierda (por razones obvias).
- Otra solución que he encontrado es: decirle al navegador (puedo hablar con un complemento a través del socket) para agregar algo como un QR-Code en x: 0; y: 0 ;, enviar la captura de pantalla al servidor de procesamiento de imágenes. Después de eso, elimine el código QR y envíe la captura de pantalla nuevamente. Entonces sé cada punto relativo a 0 | 0 pero tampoco es tan elegante.
Lo mejor sería una herramienta de línea de comandos que de alguna manera me permita determinar de qué parte de una aplicación quiero capturar una imagen.
Un ejemplo es este complemento para Firefox o esta herramienta del lado del servidor o todas estas herramientas que proporcionan capturas de pantalla de sitios web con diferentes navegadores y sistemas operativos como this . Me pregunto cómo se deshacen de los elementos de la GUI específicos del navegador.
Además :
No sé si hice esto lo suficientemente claro, pero quiero una captura de pantalla de un contenido de un navegador específico, pero sin los elementos de la GUI específica del navegador. Eso significa que una aplicación que ejecute un navegador sin cabeza no me servirá. Porque el navegador sin cabeza tiene su propio motor. Específicamente, quiero tener una captura de pantalla de, por ejemplo, Firefox versión x.
¿Sabes sobre el selenio? Es una herramienta de prueba que realmente abre un navegador específico y ejecuta pruebas escritas. Se puede usar para tomar capturas de pantalla también.
Hay 2 formas de hacerlo:
- Crea un complemento para Firefox o Chrome
La captura de pantalla se toma al crear una superposición de lienzo sobre la página. La imagen se toma del documento, por lo que la interfaz de usuario del navegador no es parte de la imagen.
- Volver a crear un navegador (PhantomJS, TrifleJS)
No hay una interfaz de usuario del navegador en primer lugar.
Hay varias herramientas de código abierto y pago para hacer lo mismo. Pero, teniendo en cuenta las razones de seguridad. Le sugiero que use la extensión ''Guardar para conducir'' de Google.
Esto le proporcionará una forma más segura de guardar capturas de pantalla directamente en su unidad de Google y junto con capturas de pantalla también permite a los usuarios guardar imágenes u otros documentos en la unidad de Google.
// Segunda sugerencia //
Si no desea utilizar la extensión anterior, puede usar ''Blipshot'', es una herramienta de código abierto, también disponible en GitHub.
// Tercera sugerencia //
La tercera mejor solución es la captura de pantalla de página completa .
Estas tres herramientas son algunas de las mejores herramientas de captura de pantalla para Google Chrome y para otros navegadores.
¡Espero que te ayude!
He tenido algo de suerte en el pasado con XULRunner
Puede probar la rutina que se describe aquí: https://blog.builtwith.com/2010/07/02/mozilla-automated-website-screen-grabber/
que básicamente ejecuta un shell de Firefox y automatiza el proceso de captura de capturas de pantalla. Es posible que necesite algunos ajustes, pero creo que podría cumplir con sus requisitos tal como están escritos.
La mayoría de los lenguajes del lado del servidor solo sirven el HTML y nunca lo renderizan. Hace un tiempo me encontré con el problema de indexar aplicaciones javascript de página única y una de las soluciones fue phantomJS .
PhantomJS hace exactamente lo que quieres. Puede renderizar el HTML (en el lado del servidor) y Phantom también tiene un lienzo incorporado para que pueda capturarlo con esa imagen. Phantom es un juego web, por lo que cubrirá la mayoría de los navegadores populares (Chrome, Safari, Opera). Si quieres ver cómo se verá el sitio web en Firefox, puedes probar SlimerJS (similar a PhantomJs pero ejecuta el motor Gecko).
Esto cubriría todos los navegadores más populares (excepto IE). Esta sigue siendo una solución sin cabeza, pero podría ver diferentes motores de diseño. Necesitarás NodeJS y puede que sea un poco de aprendizaje, pero ambos tienen documentación sobre capturas de pantalla. ¡Buena suerte!
Awesomescreenshot se desplazará hacia abajo de la página tomando capturas de pantalla reales, luego las juntará en una imagen larga para usted. Incluso puede configurarlo para que solo capture la parte de la página que se muestra, o una sección seleccionada.
Podría mezclar esto con un programa de tipo macro / lenguaje de scripting como Auto Hot Keys . Puede o no encontrarlo más fácil que usar la línea de comando. Supongo que depende de lo que estás tratando de hacer.