Seleniumでブラウザ自動操作
私が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