MENU
Apple製品を安く買うなら!詳細はこちら→ CLICK!

Google ChromeでSeleniumを使う!WebDriverについて解説

本ページにはプロモーションが含まれています。
Selenium

こんにちは、fuyutsuki(@Fuyutsuki)です。

Fuyutsuki

Webの操作を自動化したいと思ったことはありませんか?

今回はそんな方に向けて、Google ChormeでSeleniumを使ってWeb操作を自動化する方法について解説します。WebDriverの具体的なコードも記載しております。

目次

Chromeのバージョンを確認する

Seleniumで使うWebDriverのwebdriver-managerはGoogle Chromeを使用します。まずは、Google Chromeのバージョンを確認しましょう。

Chromeの右上の・・・から設定をクリックします。

Chrome 設定

Chromeについてをクリックします。

Chromeについて

Chromeのバージョンを確認します。

Chromeのバージョン確認

最新のバージョンになっていればOKです!

必要なライブラリのインストール

pythonの環境構築はこちらの記事の通り、virtualenvを使います。

こちらのように、pip install webdriver-managerとpip install seleniumを追記しましょう。

@echo off
rem スクリプトが置かれている場所をカレントディレクトリにする。
cd /d %~dp0

rem 念のためvirtualenvのインストールとpipのアップグレードを行う。
pip install virtualenv
python -m pip install --upgrade pip

rem venvの環境を構築する。
python -m venv venv
call ./venv/Scripts/activate

python -m pip install --upgrade pip
rem 各パッケージをインストール
pip install webdriver-manager
pip install selenium
pause

ライブラリのインポートはこちらのように行います。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager  # ChromeDriverManagerをインポート

Seleniumを使ったプログラム例

私のプログラム例をこちらに記載します。

こちらはnoteに自動でログインするためのコードの一例になります。


def note_login():
    # Chromeオプションを設定
    chrome_options = Options()
    chrome_options.add_argument("--headless")  # ヘッドレスモードを有効化
    chrome_options.add_argument("--window-size=1920,1080")  # ウィンドウサイズを指定
    chrome_options.add_argument("log-level=3")
    # WebDriverのセットアップ
    driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=chrome_options)
    # noteのログイン画面にアクセス
    driver.get("https://note.com/login")
    # 明示的な待ち時間を設定
    wait = WebDriverWait(driver, 10)
    driver.get_screenshot_as_file(screenshot_filepath('login'))
    time.sleep(1)
    # ログインが必要かどうかを確認
    try:
        time.sleep(1)
        username_field = wait.until(EC.presence_of_element_located((By.ID, "email")), message="ログインフォームが見つかりません。")
        password_field = driver.find_element(By.ID, "password")
        time.sleep(2)
        username_field.send_keys(note_username)
        time.sleep(2)
        password_field.send_keys(note_password)
        time.sleep(2)
        # ログインボタンをクリック
        login_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[contains(., 'ログイン')]")))
        login_button.click()
        time.sleep(2)
        # ここで自分のページに移動します。
        driver.get("https://note.com/investfuyutsuki")
        time.sleep(1)
        driver.get_screenshot_as_file(screenshot_filepath('mypage'))
        # ページが読み込まれるのを待つ
        wait = WebDriverWait(driver, 10)
    except Exception as e:
        print(e)  # ログインが既に完了しているか、他の理由でログインフォームが表示されない場合のメッセージ
        log_message('ログインが既に完了しているか、他の理由でログインフォームが表示されない場合')
    return driver

ヘッドレスモードで実行する方法

今まではブラウザで画面を表示させていましたが、画面を表示させずにブラウザを起動し、プログラムだけを実行させるヘッドレスモードもあります。
画面を表示しないので途中の経過を画面では確認できなくなりますが、その分速く実行できるというのがメリットです。

コードとしてはこちらの箇所が該当します。

    chrome_options.add_argument("--headless")  # ヘッドレスモードを有効化

まとめ:Google ChromeでSeleniumを使ってみよう!

今回の記事はGoogle ChromeでSeleniumを使う方法について解説しました。

具体的なコードも記載しているので、ぜひご参考ください。

Selenium

この記事が気に入ったら
フォローしてね!

この記事を書いた人

快適なデスク環境で作業効率アップをテーマに、様々なガジェットを紹介している20代エンジニアです。

作業効率化につながるようなプログラミングの情報についても発信中。

目次