Selenium × Geb の組み合わせ for FireFox ESR60

現在自身が動かしている環境の設定に関して公開しておきます。
あくまでも一例であり、最適解とは思っていませんが、一応動いてはいますので何かの足しになれば幸いです。

[環境情報]
(ホスト)
CentOS7
(クライアント)
Windows7
FireFox ESR60
geckodriver v0.20.1

[build.gradle]

(中略)
dependencies {
    //Groovy
    testCompile 'org.codehaus.groovy:groovy-all:2.4.13'

    //Spock
    testCompile group: 'junit', name:'junit', version: '4.+'
    testCompile "org.spckframework:spock-core:1.1-groovy-2.4'
    testCompile 'net.bytebuddy:byte-buddy:1.6.5'
    testCompile 'org.objensis:objensis:2.5.1'

    //Geb
    def gebVer = "2.1"
    testCompile "org.gebish:geb-core:${gebVer}"
    testCompile "org.gebish:geb-spock:${gebVer}"

    //Selenium-driver
    def seleniumVer = "3.12.0"
    testCompile "org.seleniumhq.selenium:selenium-java:${seleniumVer}"
    testCompile "org.seleniumhq.selenium:selenium-firefox-driver:${seleniumVer}"
    testCompile "org.seleniumhq.selenium:selenium-support:${seleniumVer}"
    testCompile "org.seleniumhq.selenium:selenium-ie-driver:${seleniumVer}"
    testCompile "org.seleniumhq.selenium:selenium-edge-driver:${seleniumVer}"
    testCompile "org.seleniumhq.selenium:selenium-chrome-driver:${seleniumVer}"
    testCompile "org.seleniumhq.selenium:selenium-firefox-driver:${seleniumVer}"
(以下、略)

[GebConfig.groovy]

import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.firefox.FirefoxOptions
(中略)
System.setProperty("brt", "FireFox")
System.setProperty("webdriver.gecko.driver", "geckodriver.exe")

FirefoxOptions options = new FirefoxOptions()
options.addPreference("browser.download.folderList", 2)  //ダウンロードに指定された最後のフォルダ
options.addPreference("browser.download.dir", /${fileDownloadDir}/) //ダウンロードフォルダの指定
options.addPreference("browser.download.manager.showhenStarting", false) //ダウンロードダイアログを非表示
options.addPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream, image/png, application/vnd.ms-excel, test/plain, application/vnd.ms-excel.sheet.macroEnabled.12")//指定したMIMEタイプは強制保存
driver = new FirefoxDriver(options)
(以下略)

[FireFox ESR38→FireFox ESR60に乗り換える際にはまったこと]
FireFoxは今までドライバが内蔵されていたので、クライアント側に配置する必要がなかった。そのため、各開発者にはFirefoxをインストールするだけで良かったが、ESR45位からはドライバも配置してもらう必要があった。そこをハンドリングし忘れていたため、テスト環境では動くが各開発者の環境では動かないという事象を発生させてしまった。
・import文の宣言を忘れていたので、実行してもFireFoxOptionsが有効でないという怒られ方をしていたがなかなか気づけなかった。(長い間スタックトレースの詳細版に記述されていた unable to resolve class FirefoxOptions というエラーに気づかずに、Jenkinsのサマリー側に表示されていた MultipleCompilationErrorsException のエラーについて追ってしまい、無駄に時間をかけてしまった)
・FireFoxProfileも併存して書いてしまっていた(上記がimport文問題が最後まで気づけず、なかなか気づけなかった)

[参考URL]
github.com
selenium/FirefoxOptions.java at master · SeleniumHQ/selenium · GitHub
selenium/CapabilityType.java at master · SeleniumHQ/selenium · GitHub

エキスパートが教えるSelenium最前線

エキスパートが教えるSelenium最前線

(内容は簡単だけど、情報をアップデートするという意味ではそんなに高い本ではないので、最低立ち読み、買ってぱら見位では読んでおいた方がいいかもです)