1
/
5

Python×SeleniumでChromeブラウザ操作を自動化してみた

こんにちは!dotDでmeepaの開発を担当している前田です。

meepa | 子どもの本当の好きに出会う 課外活動マッチングサービス
meepaは「子どもの本当の好きに出会う」を目指して、幼稚園・保育園・学童などで子どもたちが様々な体験の機会を得られるように、園と課外活動提供者をマッチングするサービスです。
https://meepa.io/

ルーティン作業は自動化したいと思い、僕のルーティン作業の1つ「ブラウザ起動して、よく使うページ(Googleカレンダー・GitHub・AWSマネコンなどなど)を開く」という作業をPython×Seleniumで自動化してみました。

Seleniumとは、ブラウザ操作を自動化するライブラリです。主にWEBアプリケーションのテストやWEBスクレイピングに利用されます。

わざわざSeleniumを使わずとも、Chromeの設定で、起動時に特定のページセットを開くことができるみたいです。
ですが、「もっと複雑なブラウザ操作を自動化したい時がくるかも」・「今後Pythonで自動化できる作業はガンガン自動化していきたいから、初めはとっつきやすいブラウザ操作から」ということで、Seleniumを使いました。

※使用OSはmacOSです。

▼目次

  • セットアップ
  • ①Pythonをアップグレード
  • ②Pythonの仮想環境を作る
  • ③Seleniumをインストールする
  • ④WebDriverをインストールする
  • ブラウザ操作を自動化するスクリプト
  • まとめ

セットアップ

ブラウザ操作を自動化するために、必要なライブラリをインストールします。

①Pythonをアップグレード

久しぶりにPythonを触るので、最新バージョンにアップグレードしました。

僕はpyenvを使って、Pythonのバージョン管理をしています。

# 現時点の最新verをインストール
pyenv install 3.10.6

# バージョンの切り替え
pyenv global 3.10.6

# バージョンが最新verに切り替わっているかを確認
python --version# 現時点の最新verをインストール
pyenv install 3.10.6

# バージョンの切り替え
pyenv global 3.10.6

# バージョンが最新verに切り替わっているかを確認
python --version

②Pythonの仮想環境を作る

プロジェクト単位でライブラリを管理したいため、仮想環境を作ります。

Python標準モジュールの「venv」を使って作りました。

# ディレクトリを作成
mkdir preset-with-chrome

# 仮想環境を作成(名前はenvにしました)
python -m venv env

# 仮想環境を有効化
source env/bin/activate# ディレクトリを作成
mkdir preset-with-chrome

# 仮想環境を作成(名前はenvにしました)
python -m venv env

# 仮想環境を有効化
source env/bin/activate

③Seleniumをインストールする

Pythonの標準パッケージマネジャー「pip」を使って、インストールしました。

# pipのアップグレード
python -m pip install --upgrade pip

# Seleniumのインストール
pip install selenium# pipのアップグレード
python -m pip install --upgrade pip

# Seleniumのインストール
pip install selenium

④WebDriverをインストールする

Pythonとブラウザをつなげるために、WebDriverが必要なのでインストールします。
Seleniumは、WebDriverを介してブラウザを操作します。

僕はブラウザはChromeをメインで使っているので、ChromeDriverをインストールしました。

ChromeとChromeDriverのバージョンを合わせた方がいいとのことなので、まずはChromeのバージョンを確認します。
アドレスバーに「chrome://version」を入力してエンターを押すと、Chromeの現バージョンが確認できます。

次に、pipでChromeDriverをインストールします。
pipでインストールすると、Driverのパス通しが不要になるので便利です

pip install chromedriver-binary==<Chromeバージョン番号>

上記コマンドを実行して、「ERROR: Could not find a version that satisfies the requirement chromedriver-binary==<Chromeバージョン番号>」というエラーが発生したら、エラー内記載のバージョン番号の中から、自分のChromeのバージョンと最も近いバージョンを探して、そのバージョンを指定して再度上記コマンドを実行してください。

ブラウザ操作を自動化するスクリプト

必要なライブラリのインストールが完了したので、これでブラウザ操作を自動化できるようになりました。

以下は僕が書いたスクリプトです。
このスクリプトを実行すると、自動でChromeが起動し、よく使うページセットを開けるようになります。

from selenium import webdriver
import chromedriver_binary
from selenium.webdriver.chrome.options import Options

# オプションの設定
options = Options()

# Chromeプロファイルの指定
options.add_argument("--user-data-dir=/Users/shoheimaeda/Library/Application Support/Google/Chrome")
options.add_argument("--profile-directory=Profile 3")

# Selenium実行後もChromeを開いたままにする
options.add_experimental_option('detach', True)

# Chromeブラウザを開く
driver = webdriver.Chrome(options=options)

# 現在のタブでページを開く
driver.get("https://xxx")

# 新規タブを作成してページを開く
driver.execute_script("window.open('https://xxx');")
driver.execute_script("window.open('https://xxx');")
driver.execute_script("window.open('https://xxx');")
from selenium import webdriver
import chromedriver_binary
from selenium.webdriver.chrome.options import Options

# オプションの設定
options = Options()

# Chromeプロファイルの指定
options.add_argument("--user-data-dir=/Users/shoheimaeda/Library/Application Support/Google/Chrome")
options.add_argument("--profile-directory=Profile 3")

# Selenium実行後もChromeを開いたままにする
options.add_experimental_option('detach', True)

# Chromeブラウザを開く
driver = webdriver.Chrome(options=options)

# 現在のタブでページを開く
driver.get("https://xxx")

# 新規タブを作成してページを開く
driver.execute_script("window.open('https://xxx');")
driver.execute_script("window.open('https://xxx');")
driver.execute_script("window.open('https://xxx');")

特定のプロファイルでChromeを立ち上げたかったので、以下のオプションをつけました。

# Chromeプロファイルの指定
# --user-data-dirは、プロファイルの保存先ディレクトリのパスを指定
options.add_argument("--user-data-dir=/Users/shoheimaeda/Library/Application Support/Google/Chrome")
# --profile-directoryは、プロファイルの名前を指定
options.add_argument("--profile-directory=Profile 3")# Chromeプロファイルの指定
# --user-data-dirは、プロファイルの保存先ディレクトリのパスを指定
options.add_argument("--user-data-dir=/Users/shoheimaeda/Library/Application Support/Google/Chrome")
# --profile-directoryは、プロファイルの名前を指定
options.add_argument("--profile-directory=Profile 3")

プロファイルの保存先ディレクトリのパスと名前は、アドレスバーに「chrome://version」を入力してエンターを押すことで、確認できます。
僕の場合は、保存先ディレクトリは「/Users/shoheimaeda/Library/Application Support/Google/Chrome」で、プロファイル名は「Profile 3」となります。

このオプションをつけてスクリプトを実行すると、特定のプロファイルでChromeを起動することができます。

僕は以下のコマンドをスニペット登録して、すぐにスクリプトを実行できるようにしました。

source ./dev/preset-with-chrome/env/bin/activate && python ./dev/preset-with-chrome/main.py

まとめ

Python×Seleniumでブラウザ操作を自動化しました。

コマンド1発で、Chromeでよく使うページセットを開けるようになったので、だいぶ時短できています!

今後も自動化できそうなルーティン作業は自動化して、記事を書いて共有したいと思います!

最後に、dotDでは、新しい事業を共に作っていくためのエンジニアのメンバーを募集しています!
少しでも興味を持ってくださった方はお気軽にご連絡ください!!


株式会社dotD | 事業創造ファーム
dotDはB2B,B2Cに関わらずのデジタルを活用した事業を連続的、非連続的に作り出すことによって社会の基盤になることを目指している「事業創造ファーム」です。
https://dotd-inc.com/


株式会社dotDからお誘い
この話題に共感したら、メンバーと話してみませんか?
株式会社dotDでは一緒に働く仲間を募集しています
1 いいね!
1 いいね!

同じタグの記事

今週のランキング

funabashi yukikoさんにいいねを伝えよう
funabashi yukikoさんや会社があなたに興味を持つかも