Selenium (Python)

selenium 4.11.0から標準化 chromedriver 不要

生成した実行ファイルと同じ位置にchromedriver.exeがいた場合は、インスタンス生成の際、そちらを参照するので注意が必要

初期設定は下記の感じかな。Optionはお好みで。
from selenium.webdriver.common.by import By による検索が推奨されています。

# -*- coding: utf-8 -*-
import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.common.by import By

# Chrome オプション設定
options = webdriver.ChromeOptions()
# ヘッドレスで起動するオプションを指定
#options.add_argument("--headless")
# シェアドメモリファイルの保持場所 tmp になる
#options.add_argument("--disable-dev-shm-usage")
# サンドボックスなし
#options.add_argument("--no-sandbox")
# 拡張オプション設定
## あらかじめCRXファイルを取得しておこう(Chrome拡張機能管理→デベロッパーモード)
##extension_path = r"C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Extensions\hogehoge\version"
##options.add_argument(f'load-extension={extension_path}')

## enable-logging : DevToolsのログ無効
## enable-automation : テスト実行警告非表示
options.add_experimental_option("excludeSwitches", ['enable-logging', 'enable-automation'])
# ダウンロードフォルダ指定
#options.add_experimental_option("prefs", {"download.default_directory" : "download_folder_path"})

# ドライバー生成
## オプションなし
#driver = webdriver.Chrome()
## オプションあり
driver = webdriver.Chrome(options=options)

# 明示的な待機 180秒待ち
driver.implicitly_wait(180)
# ページロードタイムアウト
driver.set_page_load_timeout(60)

クラス化すると下記の感じかな

# -*- coding: utf-8 -*-
import chromedriver_binary
from selenium import webdriver

class WebDriver :
    def __init__(self) :
        """
        コンストラクタ
        """
        # Chrome オプション設定
        options = webdriver.ChromeOptions()
        # ヘッドレスで起動するオプションを指定
        #options.add_argument("--headless")
        # シェアドメモリファイルの保持場所 tmp
        #options.add_argument("--disable-dev-shm-usage")
        # サンドボックスなし
        #options.add_argument("--no-sandbox")

        # 拡張オプション設定
        ## 
        ##extension_path = r"C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Extensions\ApplicationCodeString\VersionNumber"
        ##options.add_argument(f'load-extension={extension_path}')

        ## enable-logging : DevToolsのログ無効
        ## enable-automation : テスト実行警告非表示
        options.add_experimental_option("excludeSwitches", ['enable-logging', 'enable-automation'])
        # ドライバー生成
        #self.driver = webdriver.Chrome()
        self.driver = webdriver.Chrome(options=options)

        # ファイルのダウンロードフォルダを指定する
        #chrome_options.add_experimental_option("prefs", {"download.default_directory" : "download_folder_path"})

        ## 明示的な待機 180秒待ち
        #driver.implicitly_wait(180)
        # ページロードタイムアウト
        self.driver.set_page_load_timeout(3)

    def __del__(self):
        """
        デストラクタ
        """
        if self.driver is not None :
            self.driver.close()
            self.driver = None

    def __enter__(self) :
        """
        for with statement
        """
        return self

    def __exit__(self, ex_type, ex_value, trace):
        """
        for with statement
        """
        if self.driver is not None :
            self.driver.close()
            self.driver = None
タイトルとURLをコピーしました