• このエントリーをはてなブックマークに追加

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

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

やりたかったこと

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

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

問題点

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

C:\Program Files (x86)\Jenkins\jobs\GetPageInfo\workspace>rspec C:\Selenium\get_page_info.rb
Started ChromeDriver
port=9515
version=22.0.1203.0b
log=C:\Program Files (x86)\Jenkins\jobs\GetPageInfo\workspace\chromedriver.log
[1029/122515:ERROR:proxy_launcher.cc(551)] Failed to wait for testing channel presence.
d:\src\chr0\src\chrome\test\automation\proxy_launcher.cc(478): error: Value of: automation_proxy_.get()
Actual: false
Expected: true</pre>
An error occurred in an after hook
NoMethodError: undefined method `quit' for nil:NilClass
occurred at C:/Selenium/get_page_info.rb:88:in `block (2 levels) in '

F

Failures:

1) Get Page Information
Failure/Error: @driver = Selenium::WebDriver.for :chrome
Errno::ECONNREFUSED:
No connection could be made because the target machine actively refused it. - connect(2)
# C:/Selenium/get_page_info.rb:10:in `block (2 levels) in '

Finished in 46.64 seconds
1 example, 1 failure

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

対策案

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

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

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

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

フォロー、購読

読んでくれてありがとうございます!もしよければフォロー、購読をおねがいします。

スポンサーリンク