今さらながら使ってみたけどいい感じ / Selenide: concise UI tests in Java https://t.co/IDTaRXqICV
— kntmr (@knt_mr) 2017年10月5日
簡易なテストページを作って試してみました。
以下、備忘録。
各ブラウザの 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 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());