前回
引き続き、テスト自動化について記載したいと思います。
まずは、エビデンス残しですね。
エビデンス取得
JunitのようにasertEquals
を使用してもいいね、
web画面を経由しつつPTってのは面白発想かもしれない。
例えば、
import static org.junit.jupiter.api.Assertions.assertEquals;
// 画面から要素を取得
String name = Selenide.$("input[name=username]").val();
// 期待する値かを比較
assertEquals("jobs", name);
// もっと簡単にSelenideの機能を使ってもできる!
Selenide.$("input[name=username]").shouldHave(Condition.text("jobs"));
とはいえ、やっぱり画面だから画面キャプチャが多いのでは??
Selenide
なら簡単に取れちゃいます!
import com.codeborne.selenide.Selenide;
// 画面全体スクリーンショットを作成
Selenide.screenshot(file名);
でも、実際のテストって、
ボタンをクリックするとき→クリック後の両方でキャプチャ取得したりしませんか?
実際の動きに合わせるとこうなる。
import com.codeborne.selenide.Selenide;
// 画面全体スクリーンショットを作成
Selenide.screenshot(file名_001);
// selecterにはCSSセレクタが入る
Selenide.$(selecter).click();
// 画面全体スクリーンショットを作成
Selenide.screenshot(file名_002);
ここで、Selenide
の欠点が出る…
マウスカーソルが存在しない!!
そりゃよく考えたらそうですよね。マウスはブラウザの中にあるものではないからね…
これにより、キャプチャからどこクリックしたのか判断がつかない!
私の思いついた解決策は、
クリックをホールドしてその状態でキャプチャ取得すれば、クリックされるのがわかるんじゃないか???
試作品
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.interactions.Actions;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.WebDriverRunner;
// アクションを宣言
WebDriver driver = WebDriverRunner.getWebDriver();
Actions action = new Actions(driver);
// クリックホールド状態でキャプチャを取得
action.clickAndHold(Selenide.$(selecter)).perform();
takeScreenshot(file名001);
Selenide.$(selecter).click();
// クリック実行後キャプチャ取得
action.release().perform();
// クリック後の処理によってwaitなどが必要かも。。。
Selenide.screenshot(filena名002);
上記の方法によってどこをクリックしたかわかりやすいキャプチャが取得できた。
Selenideマイナスポイント
マウスカーソルが存在しないとアドレスバーがキャプチャ対象外なところだろうか。
どちらもエビデンスとしての信ぴょう性や妥当性に少し影響するかなって程度。
おわりに
基本的には使いやすく、便利なテスティングフレームワークだと思う。
Java、Junitを使用したことがある方なら導入コストが低いと思うので、
みなさんぜひ試してみては。