内容简介:在使用 selenium + chromeDriver + python3 截图时,遇上 Flash 无法加载,导致了截图 Falsh 是空白区。环境要求:selenium chromeDriver Python3chrome 无头浏览器无法自动加载 Flash
在使用 selenium + chromeDriver + python3 截图时,遇上 Flash 无法加载,导致了截图 Falsh 是空白区。
环境要求:selenium chromeDriver Python3
问题
chrome 无头浏览器无法自动加载 Flash
解决办法
参考了 allow-flash-content-in-chrome-69-running-via-chromedriver
的回答,直接修改 Chrome 的设置 chrome://settings/content/siteDetails?site=
里面的 Flash 设置,修改为 Allow
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select class chromeDriver(): def __init__(self, driver = ''): # 设置窗口大小 self.window_width = 1680 self.window_height = 948 # 设置 chromedriver 位置 self.executable_path = '/usr/local/bin/chromedriver' # 设置 Flash 的路径 self.flash_path = '/Users/cindy/Library/Application Support/Google/Chrome/PepperFlash/32.0.0.171/PepperFlashPlayer.plugin' # 获取 driver if driver: self.driver = driver else: self.driver = self.get_chrome_driver() def get_chrome_driver(self): # 头部 user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' # 创建参数对象 options = webdriver.ChromeOptions() prefs = { # 开启图片 "profile.managed_default_content_settings.images":1, # 关闭 Notification "profile.default_content_setting_values.notifications": 2, } # 设置 Flash 的路径 options.add_argument('--ppapi-flash-version=32.0.0.171') options.add_argument('--ppapi-flash-path=' + self.flash_path) options.add_argument('binary_location=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome') # 指定屏幕分辨率 options.add_argument('window-size=' + str(self.window_width) + 'x' + str(self.window_height) + '\'') # 最大化窗口 options.add_argument('--start-maximized') # 规避bug options.add_argument('--disable-gpu') # 禁用弹出拦截 options.add_argument('--disable-popup-blocking') # 隐藏自动软件 options.add_argument('disable-infobars') # 设置中文 options.add_argument('lang=zh_CN.UTF-8') #忽略 Chrome 浏览器证书错误报警提示 options.add_argument('--ignore-certificate-errors') # 更换头部 options.add_argument('user-agent=' + user_agent) options.add_argument('no-default-browser-check') # 关闭特征变量 options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('prefs', prefs) # 创建 Chrome 对象 driver = webdriver.Chrome(options = options, executable_path = self.executable_path) return driver def get(self, web_url): if not web_url: return False return self.driver.get(web_url) def add_flash_site(self, web_url): if not web_url: return False self.get("chrome://settings/content/siteDetails?site=" + web_url) root1 = self.driver.find_element(By.TAG_NAME, "settings-ui") shadow_root1 = self.expand_root_element(root1) root2 = shadow_root1.find_element(By.ID, "container") root3 = root2.find_element(By.ID, "main") shadow_root3 = self.expand_root_element(root3) shadow_root3 = self.expand_root_element(root3) root4 = shadow_root3.find_element(By.CLASS_NAME, "showing-subpage") shadow_root4 = self.expand_root_element(root4) root5 = shadow_root4.find_element(By.ID, "advancedPage") root6 = root5.find_element(By.TAG_NAME, "settings-privacy-page") shadow_root6 = self.expand_root_element(root6) root7 = shadow_root6.find_element(By.ID, "pages") root8 = root7.find_element(By.TAG_NAME, "settings-subpage") root9 = root8.find_element(By.TAG_NAME, "site-details") shadow_root9 = self.expand_root_element(root9) root10 = shadow_root9.find_element(By.ID, "plugins") shadow_root10 = self.expand_root_element(root10) root11 = shadow_root10.find_element(By.ID, "permission") Select(root11).select_by_value("allow") def expand_root_element(self, element): return self.driver.execute_script("return arguments[0].shadowRoot", element) def get_flash_url(self, web_url): if not web_url: return False self.add_flash_site(web_url) self.get(web_url) def quit_driver(self): self.driver.quit() driver = chromeDriver() url = 'http://your.website/' driver.get_flash_url(url)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python 播放音乐:使用 mido 编写,播放多声轨 MIDI 文件音乐
- Lotus 云盘 2.2 发布,增加视频转码及在线播放、MP3 播放功能
- 播放器性能优化之路
- Java播放多媒体
- iOS 音视频播放
- 使用 AudioTrack 播放音频轨道
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
React开发实战
[美] Cássio de Sousa Antonio / 杜伟、柴晓伟、涂曙光 / 清华大学出版社 / 2017-3-1 / 58.00 元
介绍如何成功构建日益复杂的前端应用程序与接口,深入分析 React库,并详述React生态系统中的其他工具与库,从而指导你创建完整的复杂应用程序。 你将全面学习React的用法以及React生态系统中的其他工具和库(如React Router和Flux 架构),并了解采用组合方式创建接口的佳实践。本书简明扼要地讲解每个主题,并呈现助你高效完成工作的细节。书中严谨深刻地讲述React中重要的功......一起来看看 《React开发实战》 这本书的介绍吧!