如何使用Selenium firefox geckodriver自动激活Flash插件?

问题描述 投票:0回答:1

当我尝试使用Selenium的自动python脚本打开一个带有flash的页面时,我到达了下图中的页面。而且我无法通过。

Flash Activation Page

这是一个运行Ubuntu 16.04的远程服务器,不能使用显示器或键盘鼠标。

Python版本:3.5.2

Selenium版本:3.14.1

Geckodriver 0.26.0

按照我的代码。

import pyvirtualdisplay
print ("pyvirtualdisplay Display Version: %s" % (pyvirtualdisplay.__version__))
from selenium import webdriver
print ("Selenium webdriver Version: %s" % (webdriver.__version__))

display = pyvirtualdisplay.Display(visible=0, size=(800, 600))
display.start()

profile = webdriver.FirefoxProfile()
profile.native_events_enabled = False
profile.set_preference("plugin.state.flash", 2)
profile.set_preference("dom.ipc.plugins.enabled.libflashplayer.so","true")
driver = webdriver.Firefox(profile)
driver.set_page_load_timeout(60)
url = 'https://www.ultrasounds.com/US.html'
driver.get(url)

driver.close()
driver.quit()
display.stop()
quit()

这是输出结果:

Python 3.5.2 (default, Apr 16 2020, 17:47:17)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyvirtualdisplay
>>> print ("pyvirtualdisplay Display Version: %s" % (pyvirtualdisplay.__version__))
pyvirtualdisplay Display Version: 0.2.4
>>> from selenium import webdriver
>>> print ("Selenium webdriver Version: %s" % (webdriver.__version__))
Selenium webdriver Version: 3.14.1
>>>
>>> display = pyvirtualdisplay.Display(visible=0, size=(800, 600))
>>> display.start()
<Display cmd_param=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '800x600x24', ':1001'] cmd=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '800x600x24', ':1001'] oserror=None return_code=None stdout="None" stderr="None" timeout_happened=False>
>>>
>>> profile = webdriver.FirefoxProfile()
>>> profile.native_events_enabled = False
>>> profile.set_preference("plugin.state.flash", 2)
>>> profile.set_preference("dom.ipc.plugins.enabled.libflashplayer.so","true")
>>> driver = webdriver.Firefox(profile)

>>> driver.set_page_load_timeout(60)
>>> url = 'https://www.ultrasounds.com/US.html'
>>> driver.get(url)
>>>
>>>
>>> import pyautogui
>>> im1 = pyautogui.screenshot('flash_activation_page.jpg')
>>> driver.close()
>>> driver.quit()
>>> display.stop()
<Display cmd_param=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '800x600x24', ':1001'] cmd=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '800x600x24', ':1001'] oserror=None return_code=0 stdout="" stderr="" timeout_happened=False>
>>>
python selenium flash ui-automation pyvirtualdisplay
1个回答
0
投票

Firefox &gt;= 69,你将无法做到这一点。

在Firefox 69中,总是激活Adobe Flash插件的设置被删除了。请看 本兼容性文件 了解详情。


Flash Player不再能总是被激活

发布了 2019年6月15日

分类: 插件

发布。火狐69

说明

作为正在进行的工作的一部分 Flash插件支持废止,Firefox 69已经从页面通知对话框中删除了 "总是激活 "选项,并从附加组件管理器中删除了 "记住这个决定 "选项。这意味着,从现在开始,火狐浏览器每次都会询问用户是否要在浏览器会话期间在网站上显示Flash内容,而用户将无法改变这一行为。

在撰写本文时,只有一半的火狐用户安装了Flash Player,根据 火狐公共数据报告,而且这个数字还在稳步下降。鉴于Flash支持将在2020年从Firefox和其他浏览器中移除,如果你的网站仍然依赖任何Flash内容,包括传统的视频播放器,我们强烈建议你尽快制定迁移计划。

© www.soinside.com 2019 - 2024. All rights reserved.