SelenideをFirefox48以降で動かす(GeckoDriverを使う)


始めに

Firefox48では、それまでのFirefoxDriverからMarionette Driverへ、対応するDriver実装が変更となりました。このMarionetteDriverを使ってSelenideでテストを動かす方法を説明します。

前提条件

以下の環境で検証しました。

環境 バージョン
OS Windows 10 Home Premium (64bit)
ブラウザ Firefox 50.0.1
Marionette (GeckoDriver) 0.10.0
Selenide 3.10 および 4.0

手順

Marionette (GeckoDrvier)ダウンロード&インストール

Marionette(GeckoDriverに改名したようです。以下GeckoDriver)を、Githubのプロジェクトページからダウンロードします。実行環境に合わせたバイナリを選んでください。

ダウンロードしたのち、アーカイブを展開しでてきたバイナリを任意の場所に配置します。UNIX系OSの場合は実行権限を付与します。

プログラムの変更

Selenideの初期化処理で、以下のような記述を追加します。

        Configuration.browser = WebDriverRunner.MARIONETTE 
        System.setProperty("webdriver.gecko.driver","C:/Users/hoge/bin/geckodriver.exe");

最初の一行目が、使用するDriver種類をMarionette(GeckoDriver)にすることを、二行目がGeckoDriverのバイナリの位置を指定してます。

なお、Selenide 3.10だと WebDriverRunner.MARIONETTE が定義されていないかもしれませんが、その場合は

        Configuration.browser = "marionette";

とすることで動きます。

実際に組み込んだコードは以下のようになります。
あまり例はよくなく、本当は @Before などでの初期処理に書いたほうがよいですね。

public class AppTest {


    @org.junit.Test
    public void Test1(){
        Configuration.browser = "marionette";
        System.setProperty("webdriver.gecko.driver","C:/Users/shima/bin/geckodriver.exe");
        GoogleHomePage page = open("https://www.google.co.jp/?gfe_rd=cr&ei=VWfRV66pOMaS9QXTo7vQBw&gws_rd=ssl", GoogleHomePage.class );
        // GoogleHomePage page = page(GoogleHomePage.class );
        page.検索窓().waitUntil(Condition.visible, 1000);
    }
}

終わりに

この対応で「Selenideがうまく動かないからFirefox47で留め置き」がなくなります。
普段Firefoxを使っていて手元でSelenideを使う人も、これで心置きなくバージョンアップができますね。