WindowsでJenkinsとWebDriverを動かそうとしてハマった

WindowsにJenkinsを入れて、WebDriverでスクレイピングしようとしてハマったときのログ。WindowsだとJenkinsをサービスとして登録すると、ジョブ動かしてブラウザ開けないんですね。知らなかった。

やりたかったこと

定期的にチェックしているWebページがあるんですが、そこを毎日見に行くのが面倒なので、WebDriverで定期巡回させて、チェックしたい項目をテキストに書きだそうと思いました。

そこでJenkinsをインストーラーで入れて、ジョブを作成。巡回用のWebDriverスクリプトをキックしてみると、よくわからないエラーが出て動きません。

問題点

ジョブを実行すると以下の様なエラーが発生します。

https://gist.github.com/daipresents/26dc292418a8a7e83add1ebe50f8ca6c.js

@driver = Selenium::WebDriver.for :chromeはブラウザが起動される部分で、そこでコネクション拒否(ECONNREFUSED)されているみたいです。

対策案

この問題についてはWindows上のSeleniumからWebDriverで定期的にブラウザを立ち上げるで解説されています。

Windowsではサービスとしてcronなどのdaemonを起動させると、そのプロセスからはGUIアプリケーションを立ちあげて動作させることが出来ない制約があります。

なるほど。勉強になりました。

サービスは使えないということなので、サービス登録せず、Javaコマンドを使ってJenkinsを起動するようにしたら、元気にWebDriverが動きました。