2011-10-04 11 views
6

Kiedy robię zrzut ekranu przy użyciu Selenium Firefox Webdriver (tak, Firefox ma wtyczkę flash) nie wyświetla obiektu flash. Pokazuje tylko białe pudełko. Czy jest coś, co muszę zrobić/zainstalować?Wykonanie zrzutu ekranu obiektu Flash za pomocą Selenium z Webdriverem

Używam tego kodu:

from selenium import webdriver 

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

Odpowiedz

4

W celu uzyskania tej pracy, musiałem użyć atrybutu wmode = przezroczysty. Ale oczywiście zależy to od tego, czy możesz edytować źródło strony, którą próbujesz zrzutu ekranu.

Aby edytować istniejącą stronę HTML, dodaj parametry WMODE do kodu HTML.

Dodaj następujący parametr do znacznika obiektu:

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

Wiwaty, ns

3

rozwiązać ten problem za radą nonshatter użytkownika. Zrobiłem screeny na zewnętrznych stronach, więc musiałem zmienić wmode na "przezroczysty" w czasie wykonywania. Dlatego potrzebowałem zmienić wszystkie EMBED i OBJECT przy użyciu javascript. Znalazłem ten piękny scenariusz: http://www.onlineaspect.com/2009/08/13/javascript_to_fix_wmode_parameters/

Więc ja po prostu wykonany skrypt do wykonania tego i przesłano do „mysite.com/myscript.js”, a teraz pracuje tu scenariusz:

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

ile mi może powiedzieć ze skanowania javascript, to powinno działać dla prawie każdej pamięci flash. Zrobiłem tylko kilka testów, ale mogę przynajmniej sprawdzić, czy działa podczas zrzutu ekranu na stronach youtube z odtwarzaniem wideo.

+0

Jak powyższą czynność można wykonać w Javie? – priti

Powiązane problemy