2011-10-04 10 views
6

Selenium Firefox Webdriverを使用してスクリーンショットを撮ると(はい、FirefoxにはFlashプラグインがあります)、Flashオブジェクトは表示されません。代わりに白いボックスが表示されます。私がやるべきことは何か/インストールしていますか?WebdriverでSeleniumを使用した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を "transparent"に変更しなければなりませんでした。したがって、私はすべてのEMBEDとOBJECTをjavascriptを使って変更する必要がありました。 I限り

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

:だからhttp://www.onlineaspect.com/2009/08/13/javascript_to_fix_wmode_parameters/

私は単にそれを実行するスクリプトを作り、「mysite.com/myscript.js」にアップロードされ、今ここでの作業スクリプト:私はこの素敵なスクリプトを見つけましたjavascriptをスキャンすると分かりますが、ほぼすべてのフラッシュのケースで動作するはずです。私はいくつかのテストを行っただけですが、少なくともビデオを再生してYouTubeページをスクリーンショットするときに動作することを確認できます。

+0

上記のことをJavaでどのように行うことができますか? – priti

関連する問題