CentOS 6.8 でphp-webdriverを試す (Firefox編)

投稿日:

前回 はローカルのmacでphp-webdriverを試したので、今回は CentOS 6.8 上での実行を目標に作業を行っていきます。
先に断っておきますと、とりあえず利用するブラウザはFirefoxのみです。

環境

  • CentOS 6.8
$ cat /etc/redhat-release
CentOS release 6.8 (Final)

Java (jdk) のインストール

$ sudo yum -y install java
  • 確認
$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

1.8が入らなかった場合とかソースから直接インストールしたい場合

$ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
$ sudo rpm -ivh jdk-8u131-linux-x64.rpm

Firefoxのインストール

$ sudo yum -y install firefox
  • 確認
$ firefox -v
Mozilla Firefox 52.1.0

geckodriverのインストール

理由は後述しますが v0.15.0 を選択します。

$ wget https://github.com/mozilla/geckodriver/releases/download/v0.15.0/geckodriver-v0.15.0-linux64.tar.gz
$ tar xvf geckodriver-v0.15.0-linux64.tar.gz
$ chmod +x geckodriver
$ sudo mv geckodriver /usr/local/bin/

selenium-server-standalone のダウンロード

理由は後述しますが selenium-server-standalone-3.3.1.jar を選択します。

$ wget http://selenium-release.storage.googleapis.com/3.3/selenium-server-standalone-3.3.1.jar

Xvfb & 日本語フォント のインストール

ヘッドレス環境でSeleniumを実行させたいので仮想ディスプレイ(をエミュレートする)Xvfbをインストールします。

$ sudo yum -y install xorg-x11-server-Xvfb
$ sudo yum -y groupinstall "Japanese Support"

※ フォントのインストールで パッケージ vlgothic-fonts-20091202-2.el6.noarch はインストール済みか最新バージョンです とか出るかもしれませんがそれはそれでおkです

試す

Xvfbの起動

仮想ディスプレイとなるXvfbを起動させます。

$ sudo Xvfb :1 -screen 0 1366x768x24 &
$ export DISPLAY=:1

seleniumの起動

seleniumを起動させます。

$ java -Dwebdriver.gecko.driver=/usr/local/bin/geckodriver -jar selenium-server-standalone-3.3.1.jar &

上記の起動処理をまとめたshell

上記の起動処理をまとめたshellはこんな感じです。

sudo sh start_selenium.sh

#!/bin/bash

##################################################
# Xvfb(仮想ディスプレイ), selenium の起動
# デフォルトのサイズは 1366x768x24 です
##################################################

# Xvfb(仮想ディスプレイ)の起動 サイズ(横x高さx深度)は変えたかったら変えてください
sudo Xvfb :1 -screen 0 1366x768x24 &

# :1 のディスプレイですよ
export DISPLAY=:1

# selenium
java -Dwebdriver.gecko.driver=/usr/local/bin/geckodriver -jar selenium-server-standalone-3.3.1.jar &

サンプル用のコードを落とす

拙作ですが shimabox/sample-phpwebdriver: Test with phpunit and phpwebdriver を使ってみます。

$ git clone https://github.com/shimabox/sample-phpwebdriver.git
$ cd sample-phpwebdriver
$ composer install --dev

テスト

$ vendor/bin/phpunit --group firefox

OK (2 tests, 3 assertions)

上記のようにテストが通ればおkです。あとは煮るなり焼くなりして頂ければと存じます。

停止

Xvfbの停止

$ ps aux | grep [X]vfb | awk '{ print "sudo kill -9", $2 }' | sh

seleniumの停止

$ ps aux | grep [s]elenium-server-standalone | awk '{ print "kill -9", $2 }' | sh

geckodriverの停止

$ ps aux | grep [g]eckodriver | awk '{ print "kill -9", $2 }' | sh

上記の停止処理をまとめたshell

上記の停止処理をまとめたshellはこんな感じです。

sudo sh kill_selenium.sh

#!/bin/bash

# Xvfb(仮想ディスプレイ)のkill
ps aux | grep [X]vfb | awk '{ print "sudo kill -9", $2 }' | sh

# seleniumのkill
ps aux | grep [s]elenium-server-standalone | awk '{ print "kill -9", $2 }' | sh

# geckodriverのkill
ps aux | grep [g]eckodriver | awk '{ print "kill -9", $2 }' | sh

何で geckodriver v0.15.0, selenium-server-standalone-3.3.1.jar なんだぜ?

testの中で $driver->manage()->window()->setSize(\Facebook\WebDriver\WebDriverDimension); のように画面サイズを変更しているところで

xx:xx:xx.xxx WARN - Exception thrown
org.openqa.selenium.WebDriverException: setWindowRect
・
・
・
Facebook\WebDriver\Exception\UnknownServerException: setWindowRect

こんなエラーが出るからです。

driver側のエラーなのかselenium側のエラーなのかよく分かりませんが、とりあえず現時点での最新バージョン(geckodriver v0.16.1, selenium-server-standalone-3.4.0.jar)の一個前のバージョンを指定すると回避できます。あぼーーん。

番外編 (CentOS 6.5の場合)

実はCentOS 6.5でも試したことがあって、その時firefoxは45.7.0が入りました。
んで、seleniumのバージョンは2.53.1.jarを使って、seleniumの実行は sudo java -Dwebdriver.firefox.bin=/usr/bin/firefox -jar selenium-server-standalone-2.53.1.jar & で行いました。そうすると、あら不思議、takeScreenshot() での画面キャプチャは全画面映してくれたんですね。
これはもしや、geckodriverの。。まぁ、そのうち解決されるんじゃないかなと思っています。

おわりに

こんな感じで、CentOS6.8でFirefoxとSeleniumとPHPUnitとphp-webdriverを使ったE2Eのテストが書けます(めんどくせーー)。
※ 多分、6.9でもいけると思います、たぶん

あれ、Chromeは?

Chromeもまためんどくさかったので別の記事で書きます。

参考にさせて頂きました

上記内容で動作しないケースがあったら

こちらの記事を参考にして頂けると解決するかもしれません。
php-webdriverのラッパーライブラリ”screru”のバージョンをあげた – Shimabox Blog

作成者: shimabox

Web系のプログラマをやっています。 なるべく楽しく生きていきたい。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください