読者です 読者をやめる 読者になる 読者になる

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

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について調べると、記事は散在しているし、日本語の情報少ないし(英語の記事よめば済む話ですが)、けっこう大変だと思うので、助けになると思います。