ヘッドレス環境でSeleniumを動かす
はじめに
WEBシステムを複数人で開発している際、共通ロジックに手を入れると、
「自分で作っている箇所は動いているが、他者が作っている箇所が動かなくなった!!」
ということが発生するケースがあります。
これは修正する関数の影響範囲を把握しきれないまま手を入れてしまった際に発生しますが、
もしこんな状況でもテストが自動的に行われていれば、早期発見に繋げることが出来ます。
今回はヘッドレス環境でXvfbを使ってSeleniumを動作させるテストを実施してみます。
(最近では各ブラウザがヘッドレス環境で動くモードが追加されているので、
少し古いやり方になるのかもしれません...。)
環境
[AWS EC2]
・CentOS 7
・Google Chrome 73.0.3683.86
・ChromeDriver 73.0.3683.68
・Python 2.7.14
・Selenium
Xvfbとは
・物理的なディスプレイがなくても仮想ディスプレイを作ってくれる(ヘッドレス環境)
Seleniumとは
・WEBアプリケーションの自動テストツール
・ブラウザに表示される要素を取得・操作することが出来る
ソフトウェアのインストール
Xvfbインストール
# sudo yum install xorg-x11-server-Xvfb
Chromeインストール
# sudo yum install xorg-x11-server-Xvfb
下記の記事を参考にインストールします。
CentOS7にChromeをインストール
ブラウザが文字化けしないように日本語フォントを入れます
yum install ipa-pgothic-fonts.noarch
ChromeDriverインストール
Chromeのバージョンに適したDriverをダウンロードして入れてください。
# sudo wget https://chromedriver.storage.googleapis.com/73.0.3683.68/chromedriver_linux64.zip
# sudo unzip chromedriver_linux64.zip
# sudo mv chromedriver /usr/local/bin
# sudo chmod 755 /usr/local/bin/chromedriver
python pipインストール
今回、Python 2.7.14が入っていたためそのまま利用します。
(Pythonが入っていない場合はインストールしてください)
# sudo yum -y install python-pip
Seleniumインストール
# sudo pip install selenium
仮想ディスプレイの起動
仮想ディスプレイを起動する番号とサイズを指定する
# export DISPLAY=:1
# sudo Xvfb :1 -screen 0 1280x1024x24 &
# export DISPLAY=:1
# sudo Xvfb :1 -screen 0 1280x1024x24 &
※ 停止
# sudo killall Xvfb
Seleniumで画面キャプチャーを取得してみる
Pythonサンプルコード
from selenium import webdriver
import os, time, sys
args = sys.argv
driver = webdriver.Chrome()
driver.get(args[1])
driver.set_window_size(1280, 1024)
time.sleep(5)
driver.save_screenshot(args[2])
driver.quit()
実行
from selenium import webdriver
import os, time, sys
args = sys.argv
driver = webdriver.Chrome()
driver.get(args[1])
driver.set_window_size(1280, 1024)
time.sleep(5)
driver.save_screenshot(args[2])
driver.quit()
弊社HPを取得してみる
python capture.py https://www.valuesccg.com/ valuesccg.png
結果
おわりに
一つのシステムを作りあげるためには、プロジェクトの管理から設計・開発・テストと
多岐に渡るため、人でなくとも出来る箇所はシステムに委譲することで、
人的リソースを減らすだけでなく、品質を高めることにつながると思います。
CI(継続的インテグレーション)の第一歩として試してみるのも良いかも知れませんね。
と言いつつ、それを設定するのもまた人なのですけど...。
Author And Source
この問題について(ヘッドレス環境でSeleniumを動かす), 我々は、より多くの情報をここで見つけました https://qiita.com/ryota_i/items/e4d495da4fd3b2745b6e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .