selenium3にバージョンを上げる際にCentOSとFirefoxの兼ね合いでまぁまぁ辛いことになったので記しておこうと思います。
ことの発端
自分の運営しているWebサイトに対して定期的にアクセスを行って処理をするシステムをJenkins×selenium×Firefoxで運用していた。
しかし、Webサイトの体裁を変えたところDOM 操作がselenium2系のバグで出来ない事象が発生。バージョンアップをしようとした
ということで前提の環境
サーバー | CentOS6.9 |
---|---|
selenium | 2系 |
Firefox | 48※ヘッドレスで稼働 |
バージョン上げてみた
まずは単純にselenium3にあげてみた・・・するとFirefoxのverをあげろと出た
[shell]
wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/ #←の中で好きなver指定して落としてくる
tar xvf firefox
ln -s /opt/firefox/firefox /usr/bin/firefox
/usr/bin/firefox -v
[/shell]
上記でインストールして -vをしたところ・・・・
[shell]
firefox -v
XPCOMGlueLoad error for file /opt/firefox/libmozgtk.so:
libgtk-3.so.0: cannot open shared object file: No such file or directory
Couldn’t load XPCOM.
[/shell]
何やらgtk3が必要とのこと こちら のサイトを参考に以下のコマンド確認
[shell]
yum provides libgtk-3.so.0
読み込んだプラグイン:fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
epel/metalink | 6.8 kB 00:00
* elrepo: ftp.ne.jp
* epel: mirror.dmmlabs.jp
* remi-safe: mirrors.mediatemple.net
* rpmforge: ftp.kddilabs.jp
* rpmfusion-free-updates: mirror.bjtu.edu.cn
* rpmfusion-nonfree-updates: mirror.smartmedia.net.id
base | 3.7 kB 00:00
centos-sclo-rh | 3.0 kB 00:00
elrepo | 2.9 kB 00:00
epel | 4.7 kB 00:00
epel/primary_db | 6.0 MB 00:00
extras | 3.4 kB 00:00
google-chrome | 951 B 00:00
google-chrome/primary | 1.9 kB 00:00
google-chrome 3/3
jenkins | 2.9 kB 00:00
mysql-connectors-community | 2.5 kB 00:00
mysql-tools-community | 2.5 kB 00:00
mysql56-community | 2.5 kB 00:00
remi-safe | 2.9 kB 00:00
remi-safe/primary_db | 950 kB 00:01
rpmforge | 1.9 kB 00:00
rpmfusion-free-updates | 3.0 kB 00:00
rpmfusion-nonfree-updates | 3.0 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 7.0 MB 00:00
184 packages excluded due to repository priority protections
警告: yum のバージョン 3.0.x は、誤ってファイル名に対して一致するでしょう。
その振る舞いをするには「*/libgtk-3.so.0」もしくは「*bin/libgtk-3.so.0」が使用できます。
No Matches found
[/shell]
No Matches found なんでねーーーーーーんだよ!!!!!!!
どうやらこのライブラリですが、 このへんの 記事を読んでみるとCentOS6.9だとライブラリ突っ込めない気がしてきた・・・・・・
ぐふ・・・・・最新版(56)へのアップデートは無理か・・・?
方針変えてみた
ひょっとして yum で提供しているFirefoxではいけるのでは?ということで試すことに
[shell]
yum update firefox
[/shell]
Firefox52(だいぶyumだと古い・・)がインスコ出来た!しかも一応動く・・・・ただ謎なのが下記コマンドはエラーままなんですよね・・・誰か理由わかりますか?(汗
[shell]
firefox -v
XPCOMGlueLoad error for file /opt/firefox/libmozgtk.so:
libgtk-3.so.0: cannot open shared object file: No such file or directory
Couldn’t load XPCOM.
[/shell]
まぁとりあえず動くようになりました。
しかし・・・・・嵐は続く
更新後Firefoxの処理を見ていたのですが・・・・なんかFirefoxめちゃめちゃ遅いんですね。
どうやらFirefox52バグあるみたい・・・・
http://zapanet.info/blog/item/3188ってことで出来る限り設定で解決するために以下のようなコードをseleniumのコードに追加!
ちなみにselenium3からプロファイルの書き方が変わったみたい(以前の書き方は非推奨)
[Java]
FirefoxOptions options = new FirefoxOptions();
options.addPreference(“network.http.spdy.enabled.http2”, false);
WebDriver driver = new FirefoxDriver(options);
[/java]
それになりに早くはなりましたが・・・・
根本原因が解決してないのでもやっと状態で終わります・・・・
最終的な環境
サーバー | CentOS6.9 |
---|---|
selenium | 2系→3.10.0 |
Firefox | 48→52※ヘッドレスで稼働 |