2011-10-04 19 views
6

Cuando tomo una captura de pantalla usando Selenium Firefox Webdriver (sí, Firefox tiene el complemento Flash) no muestra el objeto flash. Muestra simplemente una caja blanca en su lugar. ¿Hay algo que debo hacer/instalar?Toma de captura de pantalla del objeto flash usando Selenium con Webdriver

Estoy usando este código:

from selenium import webdriver 

def webshot(url, filename): 
    browser = webdriver.Firefox() 
    browser.get(url) 
    browser.save_screenshot(filename) 
    browser.quit() 

Respuesta

4

Con el fin de conseguir este trabajo, he tenido que utilizar el atributo wmode = transparente. Pero, obviamente, esto dependerá de si puede editar el origen de la página web que está intentando capturar.

Para editar una página HTML existente, agregue los parámetros WMODE al código HTML.

Añadir el siguiente parámetro a la etiqueta OBJECT:

<param name="wmode" value="transparent"> 

Cheers, ns

3

puedo solucionar el problema siguiendo el consejo de nonshatter. Estaba capturando pantallas de páginas externas, así que tuve que cambiar wmode a "transparente" en tiempo de ejecución. Por lo tanto, necesitaba cambiar todos los EMBED y OBJECT usando javascript. He encontrado este bonito script: http://www.onlineaspect.com/2009/08/13/javascript_to_fix_wmode_parameters/

Así que simplemente hice una secuencia de comandos para ejecutar esa y subido a "mysite.com/myscript.js" y ahora el guión de trabajo aquí:

from selenium import webdriver 

script = ''' 
    var s = document.createElement('script'); 
    s.src = 'http://mysite.com/myscript.js'; 
    document.body.appendChild(s); 
''' 

def webshot(url, filename): 
    browser = webdriver.Firefox() 
    browser.get(url) 
    browser.execute_script(script) 
    browser.save_screenshot(filename) 
    browser.quit() 

Por lo que yo puede decir al escanear el javascript, debería funcionar para casi cualquier caso de flash. Solo hice algunas pruebas, pero al menos puedo verificar que funcione al capturar pantallas de páginas de YouTube con la reproducción de videos.

+0

¿cómo se puede hacer lo anterior en Java? – priti

Cuestiones relacionadas