1
/
5

Seleniumによる自動テスト環境構築

Photo by Sam Albury on Unsplash


はじめに

Seleniumを使った自動テスト環境の構築方法をご紹介します。
構築する環境は以下になります。
OS:
 RockyLinux8
プログラム言語:
 Ruby
ブラウザ:
 FireFox

1.OSパッケージインストール

Seleniumに必要なOSパッケージをインストールします。

dnf install -y epel-release
dnf config-manager --set-enabled powertools
dnf install -y git
dnf install -y unzip
dnf install -y wget
dnf install -y xorg-x11-server-Xvfb
dnf install -y ImageMagick
dnf install -y vlgothic-fonts
dnf install -y vlgothic-p-fonts
wget https://moji.or.jp/wp-content/ipafont/IPAexfont/ipaexg00401.zip
unzip ipaexg00401.zip
mkdir /usr/share/fonts/ipa
mv ipaexg00401/*.ttf /usr/share/fonts/ipa/
fc-cache -fv
dnf install -y gcc
dnf install -y libxml2
dnf install -y libxml2-devel
dnf install -y libxslt
dnf install -y libxslt-devel
dnf module install -y ruby:2.7
dnf install -y ruby-devel
dnf install -y firefox
dnf install -y freeradius-utils
dnf install -y gcc-c++
dnf install -y sqlite-devel
dnf install -y rpm-build

2.Gemパッケージインストール

Rubyで使用するGemパッケージをインストールします。

gem install rspec
gem install awesome_print
gem install base32
gem install libxml-ruby
gem install net-ldap
gem install rotp
gem install selenium-webdriver
gem install rest-client
gem install nokogiri
gem install sqlite3

3.ブラウザのドライバーインストール

Seleniumが使用するブラウザのWebDriverをインストールします。

wget https://github.com/mozilla/geckodriver/releases/download/v0.29.1/geckodriver-v0.29.1-linux64.tar.gz
tar xvzf geckodriver-v0.29.1-linux64.tar.gz
chmod 555 geckodriver
mv geckodriver /usr/bin

4.ヘッドレスモード設定

物理ディスプレイがなくても仮想ディスプレイでブラウザを表示するためにXvfbの設定をします。

vi /usr/lib/systemd/system/xvfb_99.service
------------------------------------------------------------------------------
[Unit]
Description=Xvfb server daemon.
After=network.target

[Service]
Type=simple
Environment="OPTION=:99 -screen 0 1920x1080x24 -extension RANDR"
ExecStart=/usr/bin/Xvfb $OPTION

[Install]
WantedBy=multi-user.target
------------------------------------------------------------------------------

systemctl daemon-reload

systemctl start xvfb_99
systemctl enable xvfb_99

5.動作確認

インストールまで完了したので動作確認として弊社サービスへのログインをSeleniumで実行します。
ログイン画面表示、ログイン情報入力、ログイン後画面のタイミングでスクリーンショットを取得しています。
実行コマンドとテストプログラムは以下です。

respec test.rb
vi test.rb
=====================================================================
#!/usr/local/bin/rspec
#encoding: utf-8
require "selenium-webdriver"

#ブラウザ初期設定
profile = Selenium::WebDriver::Firefox::Profile.new
profile['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').click
wait.until { driver.find_element(:class, 'loginBox').displayed? }
driver.save_screenshot("login_after.png")
  • ログイン画面表示
  • ログイン情報入力
  • ログイン後画面表示

まとめ

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

セシオスでは、絶賛メンバーを募集中です。今回のストーリーを読んで、「サービスが気になる」「一緒に活躍してみたい」と感じた方・ご興味がある方がいらっしゃいましたら、下記またはこちらより気軽にエントリーしてください!まずはカジュアル面談にてお会いできるのを楽しみにしています。

エンジニア|オープンポジション
仕事も生活も、理想を叶える!自社セキュリティサービスのクラウド開発に挑戦!
私たちセシオスは、様々なセキュリティの脅威から企業を守る会社です。時間・場所にとらわれない働き方が普及する中、脆弱性が顕在化し、常に危険に晒される企業の情報システム。このような背景のもと、2007年の設立以来、シングルサインオンと統合ID管理の2分野に特化して事業を展開しています。 ▪シングルサインオン アプリケーションやサービスなどに、一度の認証手続きでアクセスできるシステムです。 ▪統合ID管理 ITシステムや資産ごとにID・パスワードを変えるのではなく、一元管理するシステムです。 ▍手がける製品 ◆Secioss Link シングルサインオンと統合ID管理をセットにしたSaaS型サービスで、セシオスの主力製品です。GoogleAppsなどのクラウドサービスをはじめ、プライベートクラウド、オンプレミスな社内システムまで、シングルサインオンが可能です。 https://seciosslink.com/ ◆Secioss Secure Web Gateway インターネットへの安全なWebアクセスを提供する、クラウド型の製品です。どこからでも利用できる他、通信内容のチェックやアクセスポリシーへの違反操作拒否、監視者が把握していないサービス利用を検知することができます。 https://seciosslink.com/function/securewebgateway ▼他にも、様々な製品を展開中です。 https://www.secioss.co.jp/service/sl_01/
株式会社セシオス
株式会社セシオスでは一緒に働く仲間を募集しています

今週のランキング

株式会社セシオスからお誘い
この話題に共感したら、メンバーと話してみませんか?