🤖

Seleniumでブラウザ自動操作

2021/11/27に公開

私がSeleniumを使う目的

Seleniumとはブラウザを自動で操作するためのツールです。元々はテスト自動化の目的で作られたツールですが、タスクの自動化など様々な方法で利用されることもあるようです。
私が所属するPJでは毎週リリースがあり、その度に各ブラウザでのテストが非常に手間だと感じていました。そんな時にブラウザ自動化に出会いSeleniumの勉強をはじめました。

*PJメンバーへすぐに共有できるよう記録します。

pythonでの環境構築

私は普段PHPを使っているのですが、今回はpythonでseleniumを書きました。
理由として、PHPよりpythonの記事の方が多いと感じメンテナンスも容易と感じたからです。

pythonでseleniumをインストール

私のpythonのバージョンは以下です

Python 3.9.1

selenium pythonをインストール

$ pip install selenium

chromeで操作したかったのでchromedriverをインストール
*safari、Edge、Firefox、IEなどテストしたいブラウザを選択

$ pip install python-chromedriver-binary

Seleniumを実行(~Yahooを表示するまで)

ここでは自社PJのブラウザテストを見せるわけにはいかないので、Yahooのホームページを表示するまでを実施します。任意のディレクトリ配下にsample.pyファイルを作成しました。

rom selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--headless')

Chrome =  webdriver.Chrome("webdriverの任意のパス")
driver = Chrome

driver.get("https://www.yahoo.co.jp/")

以下で実行可能です。

$ python sample.py

当然、ブラウザを表示した後はログインページにユーザIDとパスワードを自動入力してログインする。といったことも可能です。

今回は検索窓にキーワードを入力して検索までをやってみます。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
import time

options = webdriver.ChromeOptions()
options.add_argument('--headless')

Chrome =   webdriver.Chrome(ChromeDriverManager().install())
driver = Chrome

keyword = "ラーメン"

driver.get("https://www.yahoo.co.jp/")
elem = driver.find_element_by_name("p")

elem.send_keys(keyword)
elem.send_keys(Keys.RETURN)

time.sleep(5)

上記はyahoo検索窓のclass=_1wsoZ5fswvzAoNYvIJgrU4、name=pを探してきてキーワード「ラーメン」を入力させています。

seleniumで全てのテストケースを網羅することは不可能に近いです。実務ではデグレードを防ぐためのリグレッションテストの役割として、seleniumを活用しています。例えば、リリースによってIEで動かない箇所が出ていないかを確認するなどです。

以上になります。

Discussion