2018

12

6

PythonでヘッドレスChromeをシークレットモードで開いてやんよ!!!

Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

RPAなどの自動操作システム開発時などに色々と捗るChromeのヘッドレスブラウザですが、ひょんな事から拡張アプリをデフォ装備&シークレットモードで開く事があったので記録

自動操作に必要な各モジュールをインポート

ヘッドレスブラウザ関連

import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options # ヘッドレスブラウザオプション
from selenium.webdriver.support.ui import WebDriverWait # レンダリング待機用
from selenium.webdriver.support import expected_conditions as EC # レンダリング待機用
from selenium.webdriver.common.by import By # 要素検索

専用の拡張機能の準備

自作拡張パッケージまたはストアに存在する拡張アプリをChromeドライバーに実装させるにはこちらを参考に seleniumのChromeヘッドレスブラウザで拡張機能を自動実行させてやんよ!!!

Chromeドライバーオプション設定

""""************************************************************
Chromeドライバーユーザー設定
***************************************************************"""
# Chromeドライバー置き場(/driver/にファイルを管理)
driver_path = os.path.abspath(os.path.dirname(__file__)) + '/driver/chromedriver'
# デフォで実装させる拡張機能パッケージ
extention_path = 'yanyo_extention.crx'
# 最初に開くURL
url = "http://tokidoki-web.com/"

""""************************************************************
Chromeオプション設定
***************************************************************"""
options = webdriver.ChromeOptions()
options.add_argument('--incognito') # シークレットモードモード

# 拡張アプリを実装(crx + pemファイル)
options.add_extension(extention_path)  

# ドライバーの「〜自動化で制御」アラート非表示設定
options.add_experimental_option("excludeSwitches", ["enable-automation"])
# 拡張機能の自動更新をさせない(アプリ側の自動アップデートとドライバーの互換性によるエラーを回避)
options.add_experimental_option('useAutomationExtension', False)

# ログイン後の保存ポップアップを非表示設定
options.add_experimental_option('prefs', {
    'credentials_enable_service': False,
    'profile': {'password_manager_enabled': False}
})

driver = webdriver.Chrome(executable_path=driver_path, options=options)

# Chromeのウィンドウサイズと表示位置を指定
driver.set_window_size(1024,768)
driver.set_window_position(0,0)

# 各種オプション指定したブラウザでURLを開く
driver.get(url)
通常でヘッドレスブラウザを起動させるとウィンドウ上部に「〜自動化で制御」というアラートが表示されたり、自動ログイン処理などを実装するとログイン情報の保存の有無のダイアログが表示されて、そっちに自動操作のフォーカスが吸われてしまうのでこの辺の設定もしておくといいかもです
Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

トップへ