2011-10-04 51 views
6

當我使用Selenium Firefox Webdriver(是的,Firefox有Flash插件)截圖時,它不顯示Flash對象。它僅顯示一個白色框。有什麼我必須做/安裝?使用Selenium和Webdriver拍攝Flash對象的截圖

我使用這個代碼:

from selenium import webdriver 

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

回答

4

爲了得到這個工作,我不得不使用的wmode =透明屬性。但顯然,這取決於您是否可以編輯您嘗試截圖的網頁的來源。

要編輯現有的HTML頁面,請將WMODE參數添加到HTML代碼中。

以下參數添加到OBJECT標籤:

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

乾杯, NS

3

我修復按照nonshatter的意見的問題。我正在屏幕外部頁面,所以我必須在運行時將wmode更改爲「透明」。因此,我需要使用javascript更改所有EMBED和OBJECT。我發現這個漂亮的腳本:http://www.onlineaspect.com/2009/08/13/javascript_to_fix_wmode_parameters/

所以,我只是做了一個腳本來執行,並上傳到「mysite.com/myscript.js」現在的工作腳本這裏:

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

至於我從掃描javascript可以看出,它幾乎適用於任何閃存的情況。我只做了一些測試,但我至少可以驗證它在視頻播放時對YouTube網頁進行屏幕截圖時的效果。

+0

上述事情如何在Java中完成? – priti