Selenium でブラウザ操作の自動化

Python の Selenium パッケージを使って、WEBブラウザ操作の自動化をできるようにしてみました。Webアプリ開発のテストの自動化などに役立てそうです。動作環境はmacOSで、Selenium を PyCharm の venv環境で使用していきます。

PyCharmで新しいプロジェクトを作成

  1. PyCharmを起動し、「New Project」を選択します。
  2. プロジェクト名を入力し、Python interpreterの設定で「New environment using Virtualenv」を選択します。
  3. 「Create」をクリックします。

venv環境にSeleniumをインストール

PyCharmでターミナルを開き、以下のコマンドを実行してSeleniumをインストールします。

bash
pip install selenium

ChromeDriverのダウンロードと設定

Chrome for Testing availability

  1. ChromeDriverの最新版を公式サイトからダウンロードします。
  2. ダウンロードしたzipファイルを解凍し、適当なディレクトリに保存します(例:/usr/local/bin)。
  3. ターミナルを開き、以下のコマンドでChromeDriverのパスを通します。

bash
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver

PyCharmでSeleniumのサンプルコードを実行

  1. PyCharmで新しいPythonファイル(例:test_selenium.py)を作成します。
  2. 以下のサンプルコードをファイルに貼り付けます。

python
import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# ChromeDriverのパス
driver_path = '/usr/local/bin/chromedriver'

# サービスオブジェクトを作成(詳細ログを有効にする)
service = Service(driver_path)
options = webdriver.ChromeOptions()
options.add_argument('--log-level=ALL')

# ChromeDriverの設定
driver = webdriver.Chrome(service=service, options=options)

# 任意のページにアクセス
driver.get('http://127.0.0.1:8700')

try:
    # ページ上のすべての要素が読み込まれるまで待機
    WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located
    )
    print("test1 start")
    # JavaScriptを使ってクリック
    driver.execute_script("document.querySelectorAll('a')[0].click();")
    time.sleep(0.5)
    print("test1 done")
    driver.execute_script("window.history.back();")
    time.sleep(0.5)

    print("test2 start")
    # JavaScriptを使ってクリック
    driver.execute_script("document.querySelectorAll('a')[1].click();")
    time.sleep(0.5)
    print("test2 done")
    driver.execute_script("window.history.back();")
    time.sleep(0.5)

except Exception as e:
    print(f"Error: {e}")

time.sleep(1)

# ブラウザを閉じる
driver.quit()

PyCharmでファイルを右クリックし、「Run 'test_selenium'」を選択して実行します。

以上で、Seleniumを使用してJavaScriptを実行するまでの環境構築とサンプルコードの実行が完了です。

ボタンイベントなどを実行する方法はいろいろありますが、上のソースコードのようにJavaScriptで実行させるのが、わかりやすいかなと思いました。

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

Python学習にオススメの本をご紹介!
Pandasでデータサイエンスはじめよう!
スクレイピングにオススメの書籍

▼ Beautiful Soup4を使ったWebクローリングをはじめ、表データをpandasやOpenPyXL、matplotでデータ解析、グラフ表示などのスクレイピングのやり方が分かりやすく説明されてます。図解が多いのでPython初心者の方でも読み進められる内容となってます。