Seleniumによる自動テスト環境構築
schedule 2022/09/29 refresh 2023/11/08
はじめに
Seleniumを使った自動テスト環境の構築方法をご紹介します。
構築する環境は以下になります。
OS:
RockyLinux8
プログラム言語:
Ruby
ブラウザ:
FireFox
1.OSパッケージインストール
Seleniumに必要なOSパッケージをインストールします。
|
dnf install -y epel-release
|
2.Gemパッケージインストール
Rubyで使用するGemパッケージをインストールします。
gem install rspecgem install awesome_printgem install base32gem install libxml-rubygem install net-ldapgem install rotpgem install selenium-webdrivergem install rest-clientgem install nokogirigem install sqlite3 |
3.ブラウザのドライバーインストール
Seleniumが使用するブラウザのWebDriverをインストールします。
wget https://github.com/mozilla/geckodriver/releases/download/v0.29.1/geckodriver-v0.29.1-linux64.tar.gz
|
4.ヘッドレスモード設定
物理ディスプレイがなくても仮想ディスプレイでブラウザを表示するためにXvfbの設定をします。
vi /usr/lib/systemd/system/xvfb_99.service |
5.動作確認
インストールまで完了したので動作確認として弊社サービスへのログインをSeleniumで実行します。
ログイン画面表示、ログイン情報入力、ログイン後画面のタイミングでスクリーンショットを取得しています。
実行コマンドとテストプログラムは以下です。
respec test.rb |
vi test.rb=====================================================================#!/usr/local/bin/rspec#encoding: utf-8require "selenium-webdriver"#ブラウザ初期設定profile = Selenium::WebDriver::Firefox::Profile.newprofile['intl.accept_languages'] = 'ja'capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(accept_insecure_certs: true)options = Selenium::WebDriver::Firefox::Options.new(profile: profile, log_level: :trace)options.add_argument('--headless')driver = Selenium::WebDriver.for(:firefox, { options: options, desired_capabilities: capabilities })wait = Selenium::WebDriver::Wait.new(timeout: 10)#ログイン画面表示driver.get("https://slink.secioss.com/user/?tenant=test-yamada")driver.save_screenshot("login_before.png")#ログイン情報入力driver.find_element(:id, 'username_input').send_keys("XXXX")driver.find_element(:id, 'password_input').send_keys("YYYY")driver.save_screenshot("input_login_info.png")#ログインボタンクリックdriver.find_element(:id, 'login_button').clickwait.until { driver.find_element(:class, 'loginBox').displayed? }driver.save_screenshot("login_after.png") |
- ログイン画面表示

- ログイン情報入力

- ログイン後画面表示

まとめ
RockyLinux8でのSeleniumインストールから動作確認までをご紹介しました。
弊社では主にリグレッションテストとしてSeleniumでの自動テストを実施しています。
入力項目が多かったり、テスト対象が多い場合などに一度シナリオを作成しておくとテストに掛かる負荷が軽減され、他のテストに注力できます。
具体的なシナリオ作成や安定して動作させるコツなどは別の機会にご紹介したいと思います。
