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(x86)¥Mozilla Firefox¥filefox.exe -p
でプロファイルを作成
参考
[Selenium 2] Firefox起動時のポートロック待ち時間変更方法 - 僕らはみんな歪ている
Special Thanks
この事象を解決するにあたり、 日本Seleniumユーザーコミュニティの伊藤望さんからアドバイスを頂きました。 Selenium のことで困ったら、ここのオンラインフォームで質問してみるといいかもですね。 日本Seleniumユーザーコミュニティ オンラインフォーム Seleniumについて調べると、記事は散在しているし、日本語の情報少ないし(英語の記事よめば済む話ですが)、けっこう大変だと思うので、助けになると思います。