今さらながら Selenide を使ってみる

簡易なテストページを作って試してみました。

サンプルコード


以下、備忘録。

各ブラウザの WebDriver をダウンロードして配置する。

Third Party Browser Drivers - Downloads

テスト対象のブラウザを設定する。

{
    Configuration.browser = WebDriverRunner.CHROME;
    System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe"); // WebDriver のパス
}

テストコードからは jQuery のようにセレクタを使って要素を指定する。

open("http://localhost:8080/");
$(By.name("input")).val("foo").pressEnter();
$("#output").shouldBe(text("foo"));

テストコードに同じセレクタが重複するのを避けるため、Page Object パターンを使う。

Page Objects - Documentation

ページ要素を Page Object クラスに隠蔽する。

@FindBy(name = "input")
public SelenideElement input;
@FindBy(id = "output")
public SelenideElement output;

テストコードからセレクタを排除できる。

IndexPage page = open("http://localhost:8080/", IndexPage.class);
page.input.val("bar").pressEnter();
page.output.shouldBe(text("bar"));

Selenide としては、ページ要素のフィールドを private にして、ページ要素に対するロジックをメソッドで提供することを推奨している模様。

IndexPage echo(String val) {
    $(By.name("input")).val(val).pressEnter();
    return this;
}
String output() {
    return $("#output").text();
}

テストコードにはページ要素を操作するメソッド呼び出しとアサーションを記述する。

IndexPage page = open("http://localhost:8080/", IndexPage.class);
page.echo("buz");
assertEquals("buz", page.output());