国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Selenium + chromeDriver + Python3 完成 Flash 播放

Hancock_Xu / 1753人閱讀

摘要:在使用截圖時,遇上無法加載,導致了截圖是空白區。否則無法直接修改的設置。

在使用 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)
最后

不能使用無界面模式,不能設置 handless 參數 options.add_argument("--headless")。否則無法直接修改 Chrome 的設置。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43636.html

相關文章

  • Python3網絡爬蟲實戰---1、請求庫安裝:Requests、Selenium、ChromeDr

    摘要:下一篇文章網絡爬蟲實戰請求庫安裝爬蟲可以簡單分為幾步抓取頁面分析頁面存儲數據。相關鏈接官方網站官方文檔中文文檔安裝驗證安裝進入命令行交互模式,導入一下包,如果沒有報錯,則證明安裝成功。 下一篇文章:Python3網絡爬蟲實戰---2、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp 爬蟲可以簡單分為幾步:抓取頁面、分析頁面、存儲數據。 在第一步抓取頁面的過程中,...

    wawor4827 評論0 收藏0
  • Python3網絡爬蟲實戰---2、請求庫安裝:GeckoDriver、PhantomJS、Aioh

    摘要:上一篇文章網絡爬蟲實戰請求庫安裝下一篇文章網絡爬蟲實戰解析庫的安裝的安裝在上一節我們了解了的配置方法,配置完成之后我們便可以用來驅動瀏覽器來做相應網頁的抓取。上一篇文章網絡爬蟲實戰請求庫安裝下一篇文章網絡爬蟲實戰解析庫的安裝 上一篇文章:Python3網絡爬蟲實戰---1、請求庫安裝:Requests、Selenium、ChromeDriver下一篇文章:Python3網絡爬蟲實戰--...

    Cristalven 評論0 收藏0
  • Windows64+Python3+selenium3自動化環境的搭建(1)

    摘要:若不出現下方界面則跳過此步啟動后,錯誤提示丟失。處理方法下載安裝運行庫即可。調出命令窗口并輸入出現下圖顯示內容則表示版本安裝成功。將放在盤中文件夾下的,如果是位系統則放在中四打開檢驗環境是否搭建成功出現下方界面則表示搭建成功 一、Python安裝1、Python3官網下載https://www.python.org/downlo... 2、選擇對應系統和版本(注意是32位還是64位,我...

    張遷 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<