LoginSignup
1
1

More than 1 year has passed since last update.

UIテスト自動化してみた~発展編~

Posted at

前回

UIテスト自動化してみた~導入編~

引き続き、テスト自動化について記載したいと思います。

まずは、エビデンス残しですね。

エビデンス取得

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を使用したことがある方なら導入コストが低いと思うので、
みなさんぜひ試してみては。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1