現在、私は社内プロジェクト(従業員管理システムのようなもの)をセレンテストでカバーしています。そのため、フォームには多くの必須入力があります。いずれかが空の場合、フォーム全体が検証されます。また、入力付近のテキスト ラベルが赤くなり、適切なバリデータ メッセージが表示されます。バリデーターの適切な作業をチェックするための私のアプローチは非常に簡単です: - 入力に近いラベルの色を取得するための get color text メソッドを書きました (赤の場合、バリデーターはフォームの送信に取り組んでいます)
public String jsGetColor(String css){
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x=$(\'"+css+"\');");
stringBuilder.append("return x.css('color')");
String res= (String) js.executeScript(stringBuilder.toString());
return res;
}
// the way i use this method:
String defaultTimeOffLabelColor=(String)jsGetColor(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.typetimeofflabel"));
driverClickByCssSelector("rms.home.timeoffsportlet.addnewtimeoff.submitbutton");
String validationTimeOffLabelColor=(String)jsGetColor(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.typetimeofflabel"));
//verifying validation works properly using Assert mechanism
Assert.assertFalse("validation is invalid", validationTimeOffLabelColor.equals(defaultTimeOffLabelColor));
また、バリデーターが機能するとエラーメッセージが表示されることを追加する必要があります。したがって、このメッセージのロケーターを見つけて、適切なテキストを比較できます。フォームの送信など、バリデーターが機能しないその他のケースでは、バリデーターのメッセージのスタイルは「display:none」のようなものになります。したがって、すべてが問題ないことを理解するには、メッセージが表示されるかどうかを確認するだけです。
driver.findElement(By.cssSelector(...blabla...)).isDisplayed()
そして最後のポイント。バリデータのメッセージを検証したい場合。
public void addNewTimeOffValidatorsMessagesCheck(String expectedValidationMsg) {
Assert.assertTrue(driver.findElement(By.cssSelector(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.validationmessage"))).getText().trim().equals(expectedValidationMsg));
}
addNewTimeOffValidatorsMessagesCheck("Timeoff type was not selected!");
これで、もう少し明確になることを願っています)