如何使用selenium firefox geckodriver自动激活Flash插件?
How to automate the activation of Flash plug-in using selenium firefox geckodriver?
当我尝试使用带有 Selenium 的自动 python 脚本打开带有 flash 的页面时,我到达了下图中的页面。我不能通过。
它是远程服务器 运行 Ubuntu 16.04,无法访问监视器或 keyboard/mouse。
Python版本:3.5.2
硒版本:3.14.1
壁虎驱动程序 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>
>>>
如果 Firefox
>= 69
,您将无法做到这一点:
The setting to always activate the Adobe Flash plugin was removed in
Firefox 69. See this compatibility document
for details.
无法再始终激活 Flash Player
发布时间:2019 年 6 月 15 日
类别:Plug-ins
发布:Firefox 69
描述
作为正在进行的 Flash plug-in support deprecation 的一部分,Firefox 69 已从页面通知对话框中删除“始终激活”选项,并从附加组件管理器中删除“记住此决定”选项。这意味着,从现在开始,Firefox 每次都会询问用户是否要在浏览器会话期间在网站上显示 Flash 内容,并且用户将无法更改此行为。
在撰写本文时,只有一半的 Firefox 用户根据 Firefox Public Data Report 安装了 Flash Player,而且这个数字还在稳步下降。鉴于 Firefox 和其他浏览器将于 2020 年取消对 Flash 的支持,如果您的网站仍然依赖任何 Flash 内容(包括旧版视频播放器),我们强烈建议您尽快制定迁移计划。
当我尝试使用带有 Selenium 的自动 python 脚本打开带有 flash 的页面时,我到达了下图中的页面。我不能通过。
它是远程服务器 运行 Ubuntu 16.04,无法访问监视器或 keyboard/mouse。
Python版本:3.5.2
硒版本:3.14.1
壁虎驱动程序 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>
>>>
如果 Firefox
>= 69
,您将无法做到这一点:
The setting to always activate the Adobe Flash plugin was removed in Firefox 69. See this compatibility document for details.
无法再始终激活 Flash Player
发布时间:2019 年 6 月 15 日
类别:Plug-ins
发布:Firefox 69
描述
作为正在进行的 Flash plug-in support deprecation 的一部分,Firefox 69 已从页面通知对话框中删除“始终激活”选项,并从附加组件管理器中删除“记住此决定”选项。这意味着,从现在开始,Firefox 每次都会询问用户是否要在浏览器会话期间在网站上显示 Flash 内容,并且用户将无法更改此行为。
在撰写本文时,只有一半的 Firefox 用户根据 Firefox Public Data Report 安装了 Flash Player,而且这个数字还在稳步下降。鉴于 Firefox 和其他浏览器将于 2020 年取消对 Flash 的支持,如果您的网站仍然依赖任何 Flash 内容(包括旧版视频播放器),我们强烈建议您尽快制定迁移计划。