りあるふぁいとぷろぐらまー

IT系の技術ネタと格闘技(ブラジリアン柔術)ネタを徒然なるままに綴る予定。

FireFox多重起動時の「unable to bind to locking port 7054 within 45 seconds」の対処法

現象

Jenkins から Firefox 多重起動時に下記のエラーが発生

unable to bind to locking port 7054 within 45 seconds

前提(使用環境)

対処法 ~ Pattern 1 ~

待ち時間変更

lib/selenium/webdriver/firefox/launcher.rb でSOCKET_LOCK_TIMEOUT = 45 と定義されている部分があるので、そこの値を変更。

SOCKET_LOCK_TIMEOUT = 45


直接、gemをいじっちゃうという。まぁ、定数定義しているところだし、特に問題なし。

対処法 ~ Pattern 2 ~

ポート番号変更

webdriver 設定時にポート番号を指定する

port = 7000
driver = Selenium::WebDriver.for(:firefox, :port => port, :profile => profile)

port は動的にできるといいかな。

対処法 ~ Pattern 3 ~

Firefox Profile を各テストケース毎に設定

同じProfileに対して、複数のテストケースを同時に実行している状況はよろしくないと思われるので、各テストケース毎にProfile を設定した方がよさげ

Firefox Profile 設定方法

ウィンドウズボタンの「プログラムとファイルの検索」から

C:¥Program Files(x86Mozilla Firefox¥filefox.exe -p

でプロファイルを作成

参考

[Selenium 2] Firefox起動時のポートロック待ち時間変更方法 - 僕らはみんな歪ている

Special Thanks

この事象を解決するにあたり、
日本Seleniumユーザーコミュニティの伊藤望さんからアドバイスを頂きました。

Selenium のことで困ったら、ここのオンラインフォームで質問してみるといいかもですね。
日本Seleniumユーザーコミュニティ オンラインフォーム
Seleniumについて調べると、記事は散在しているし、日本語の情報少ないし(英語の記事よめば済む話ですが)、けっこう大変だと思うので、助けになると思います。