selenium-webdriver+Firefoxを使ったRubyの運用スクリプトをCentOS6環境からCentOS7に移行してきたところ、以下のようなエラー吐いて動かなくなった。
/path/to/mydir/vendor/bundle/ruby/2.3.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:90:in `connect_until_stable': unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)
GemのバージョンやFirefoxのバージョン変えてみたり、ネット調べながら色々とやっていたのですが、 結果、Xvfb
の起動忘れにより仮想デスクトップが稼働してない状態という凡ミスでした。。。
CentOS7へのXvfb導入
せっかくなのでXvfbのインストールからSystemd化まで書きます。
インストールはyumコマンドだけ。
yum install xorg-x11-server-Xvfb
/etc/systemd
以下に定義ファイルを作成。
:5
の部分はディスプレイ番号示しているので適宜変更。
cat <<EOF > /etc/systemd/system/Xvfb.service [Unit] Description=X Virtual Frame Buffer Service After=network.target [Service] ExecStart=/usr/bin/Xvfb :5 -screen 0 1024x768x24 [Install] WantedBy=multi-user.target EOF
実行権限を忘れずに設定し、systemdの読み込み、有効化。
chmod +x /etc/systemd/system/Xvfb.service systemctl daemon-reload systemctl enable Xvfb.service systemctl start Xvfb.service
指定したディスプレイ番号をexportすればSeleniumでの処理動くはず。
export DISPLAY=:5