Python×業務効率化 Automagicaでブラウザを自動で動かしてみた


はじめに

Python×業務効率化の可能性を模索中のk_mayo_beamと申します。
今回はPythonでRPAできないかと探し回っていたら見つけたAutomagicaというライブラリの機能をほんの少しだけ触ってみます。

Automagicaってなんだ?

簡単に言うとPythonでRPAができるよ!っていうライブラリだと思ってます。
公式のドキュメントは⇒こちら

Pythonには多数の便利なライブラリが準備されており、
比較的簡単にExcelやPDFを触ったり、WebUIの自動テストをしたり、
マウスやキーボードを自動で動かしたりできます。

ただ、統合的な自動化をしようとすると、
たくさんのライブラリをインポートするのがちょっとだけ面倒です。

AutomagicaはPyAutoGUI,Selenium,Tesseract,OpenPyXL,Beautiful Soupなどの
有名どころのライブラリをうまく連携させて、使いやすい関数群を提供してくれます

とりあえずインストールしてみる

コマンドはこちら↓
pip install https://github.com/OakwoodAI/automagica/tarball/master
依存関係があるライブラリがたくさんインストールされるので、気をつけて下さい。

少しだけ触ってみる

今回はほんの3つの機能だけを使って、WEB操作を自動化してみます。
以下はChromeでQiitaを開いて、「Python×業務効率化」と検索して、ロゴをクリックするだけのプログラムです。

find_mayo_beam.py
from automagica import ClickOnImage, ChromeBrowser, DisplayMessageBox
from retry import retry

#画像が見つかったらクリックする関数
@retry(delay=1)
def WaitAndClickImage(pic:str):
    return ClickOnImage(pic)

#Qiitaの検索窓のxpath
xpath = '//*[@id="globalHeader"]/div/div[1]/form/input'
#検索する内容
content = 'python×業務効率化'

#ChromeでQiitaを開く
browser = ChromeBrowser()
browser.get('https://qiita.com/')

#検索窓を探して内容を検索する
browser.find_element_by_xpath(xpath).send_keys(content)
browser.find_element_by_xpath(xpath).submit()

#k_mayo_beamのロゴを探してクリックする
WaitAndClickImage('logo.png')

#やったぜ!
DisplayMessageBox("やったぜ!")
browser.close()

画像のクリックですが、スクリーンショットをとって画像マッチングをするようなので、画像のサイズに要注意です。
SnippingToolなんかで取得するのがおすすめ。

動作の様子

ちょっとGIFを作成してみました。

さいごに

総じて面白いツールだと思います。
まだまだたくさんの機能がついているので、試してみたいと思います。