2011-10-04 14 views
6

Quando si acquisisce uno screenshot utilizzando Selenium Firefox Webdriver (sì, Firefox ha il plug-in Flash) non mostra l'oggetto flash. Invece mostra semplicemente una scatola bianca. C'è qualcosa che devo fare/installare?Acquisizione di schermate di oggetti flash utilizzando Selenium con Webdriver

sto usando questo codice:

from selenium import webdriver 

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

risposta

4

Al fine di ottenere questo lavoro, ho dovuto usare il wmode = attributo trasparente. Ma ovviamente, questo dipenderà dalla possibilità di modificare l'origine della pagina web che stai cercando di fare screenshot.

Per modificare una pagina HTML esistente, aggiungere i parametri WMODE al codice HTML.

aggiungere il seguente parametro al tag OBJECT:

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

Cheers, ns

3

posso risolvere il problema seguendo il consiglio di nonshatter. Stavo guardando le pagine esterne, quindi ho dovuto cambiare wmode in "trasparente" in fase di runtime. Pertanto, avevo bisogno di cambiare tutti i EMBED e OBJECT utilizzando javascript. Ho trovato questo bel script: http://www.onlineaspect.com/2009/08/13/javascript_to_fix_wmode_parameters/

Così ho semplicemente fatto uno script per eseguire tale e caricato "mysite.com/myscript.js" e ora lo script di lavoro qui:

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() 

Per quanto mi può dire dalla scansione del javascript, dovrebbe funzionare per quasi tutte le case flash. Ho fatto solo alcuni test, ma posso almeno verificare che funzioni quando si esegue lo screenshot delle pagine di youtube con la riproduzione di video.

+0

come può essere eseguita la suddetta cosa in Java? – priti

Problemi correlati