使用Selenium和Webdriver截取flash对象的屏幕截图

时间:2011-10-04 01:48:35

标签: flash selenium webdriver

当我使用Selenium Firefox Webdriver截取屏幕截图时(是的,Firefox有Flash插件),它不显示flash对象。它只显示一个白色的盒子。我必须做/安装吗?

我正在使用此代码:

from selenium import webdriver

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

2 个答案:

答案 0 :(得分:4)

为了使这个工作,我不得不使用wmode = transparent属性。但显然,这取决于您是否可以编辑您尝试截图的网页来源。

要编辑现有HTML页面,请将WMODE参数添加到HTML代码中。

将以下参数添加到OBJECT标记:

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

干杯, 的 NS

答案 1 :(得分:3)

我通过遵循非仇恨者的建议来解决问题。我正在截取外部页面,所以我不得不在运行时将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页面来验证它是否有效。