PythonWindows

WindowsでPython+Selenium+ChromeDriverでRPAする

Python

みなさんRPAはご存じかと思います。

RPAとは「Robotic Process Automation /ロボティック・プロセス・オートメーション」の略語で、ホワイトカラーのデスクワーク(主に定型作業)を、ルールエンジンやAI(人工知能)などの技術を備えたソフトウェアのロボットが代行・自動化する概念、と定義されています。

RPAは2017年くらいからブームになってますが、実は20年以上昔から効率化のために使われている概念ではあります。

私は10年くらい前に「UWSC」というRPAツールを使ってブログメンテナンス系のツールを自作したことがあったのでですが、現在は「UWSC」については開発は止まっているようです。

今回はとある案件で10年以上ぶりにRPAツールを作成する必要があったため調査してみたところ、Python(正確にはPython+Selenium+ChromeDriver)を使うことでRPAツールを作成することができそうでした。

そこで今回はPython+Selenium+ChromeDriverでChromeを自動操作するRPAツールを作ってみます。

ためした環境

今回は開発環境として、Hyper-V上のWindows10開発環境の仮想マシンに対してPythonをインストールしてみます。

以下で作成した仮想マシンになります。

必要なアプリのインストール

Pythonのインストール

Pythonのインストールについてはこちらの記事で紹介しています。

Selenimumのインストール

Seleniumのインストールは「pip install selenium」から行うことができます。

Chromeのインストール

当然ですが、Chromeのインストールも行います。

Google Chrome - Google の高速で安全なブラウザをダウンロード
新しい Google Chrome で毎日をもっと快適に。Google の最先端技術を搭載し、さらにシンプル、安全、高速になった Chrome をダウンロードしてご活用ください。

ChromeDriverのインストール

ChromeDriverのインストールについても「pip install chromedriver-binary」で行うことができます。

ここで注意となりますChromeDriverのバージョンをChrome本体のバージョンと合わせないと動作しません。

バージョンを指定しないでインストールしてしまうと差分が発生して動作しないということが多いのでバージョンを指定してインストールすることをお勧めします。

まずChromeのバージョンを確かめます。

Chromeのバージョンは84.xxxx系になっています。

なのでChromeDriverのページから84.xxx系に対応するChromeDriverのバージョンを確認します。

Downloads  |  ChromeDriver  |  Chrome for Developers

対応バージョンが84.0.4147.30であることが分かったら、バージョンを指定してChromeDriverをインストールします。

事前確認

Pythonが動作することを確認する

まずは、簡単なPythonスクリプトが動くことを確認します。

Pythonスクリプトを「C:\Python\TestRPA」フォルダに配置して下さい。

print("Hello world!")

Powershellコンソールを起動して実行してみます。

これでPythonが動くことは確認できました。

Chromeの自動操作

次にいよいよSelenum+ChromeDriverを使ったRPAツールを作成していきます。

ページを開いてみる

まずはページを開いてみます。Yahooのトップページでも開いてみます。

import time
from selenium import webdriver
import chromedriver_binary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 開くURL
url = "https://yahoo.co.jp/"
# ChromeDriverの呼び出し
driver = webdriver.Chrome()
# utlを開く
driver.get(url)
# 5秒待機
time.sleep(5)
# Chromeを閉じる
driver.close()

スクリプトを実行すると、自動的にChromeが開いてYahooのページが表示されて5秒経ったら閉じる、というRPAツールとしての動きが確認できます。

もし以下のようなエラーが表示された場合にはChromeDriverで操作できるバージョンにChromeを合わせて下さい。

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 85

ChromeDriverをバージョン指定して再インストールします。
いったん「pip uninstall chromedriver-binary」コマンドでアンインストールしてからバージョン指定してインストールして下さい。こまかい対応方法は上部に記載しています。

スクリーンショットを取得する

ついでにスクリーンショットも取ってみます。

スクリーンショットが自動的に取得できれば、
「毎朝、監視系のシステムにログオンして問題がないかを目視でチェックする」
という業務を
「毎朝、自動取得されているスクリーンショットを目視でチェックする」
というような効率化することができます。(最終的にはチェックも自動化したいですが・・・)

先ほどのスクリプトに「driver.save_screenshot(‘./screen_shot.png’)」の行を追加しています。

import time
from selenium import webdriver
import chromedriver_binary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 開くURL
url = "https://yahoo.co.jp/"
# ChromeDriverの呼び出し
driver = webdriver.Chrome()
# utlを開く
driver.get(url)
# 5秒待機
time.sleep(5)

# ScreenShotを取得します<-追加
driver.save_screenshot('./screen_shot.png')

# Chromeを閉じる
driver.close()

スクリプトを実行すると同じフォルダ内にスクリーンショットのファイルが保管されています。

今回は簡単ですが、Python+Selenium+ChromeDriverでのブラウザの自動操作について行いました。

これだけでもチェック業務などを自動化することができます。次はフォームへのログオンやWEBからの情報取得する方法について紹介したいと思います。

Pythonのオススメ勉強方法

私がオススメするPython初心者向けの最初に購入すべき書籍は「シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全です。

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

この書籍は実際にシリコンバレーの一流エンジニアとして活躍している酒井潤さんが書いた本です。

内容も初心者から上級者までまとめられており、各Lessonも長すぎずに分かりやすくまとめられているので、初心者の方にもおすすめです。

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

今回は以上となります。

コメント