当我使用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()
答案 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页面来验证它是否有效。