我正在测试ContactUs表单。 字段中有两个占位符状态。 第一种状态-什么也没填。
<label for="edit-submitted-name">Name </label>
第二种状态-表单发送时出现验证错误。
<label for="edit-submitted-name" class="error">Name </label>
我想检查,是否在发送class =“ error”之后出现。
这是我尝试执行的操作:
if (driver.getPageSource().contains("error")) {
System.out.println("Validation down");
} else {
System.out.println("Validation okay");
}
答案 0 :(得分:2)
您可以在页面源中获得//label[@for='edit-submitted-name' and not(@class='error')]
字符串的多个实例,最好明确标识唯一元素,这样就不会出现误报匹配。
这是使用XPath定位器完成的方法:
未填写任何内容的标签:
//label[@for='edit-submitted-name' and @class='error']
带有验证错误的标签:
if (driver.findElements(By.xpath("//label[@for='edit-submitted-name' @class='error']")).size() > 0) {
System.out.println("Validation error is present.");
}
检查验证错误是否存在的示例Java代码:
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
style="@style/Widget.AppCompat.Toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:title="@string/app_name"
app:navigationIcon="@drawable/ic_menu_black_24dp">
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout>
更多信息:
答案 1 :(得分:1)
要验证是否存在class="error"
,可以使用以下解决方案:
使用cssSelector
:
try {
driver.findElement(By.cssSelector("label[for='edit-submitted-name']:not(.error)"))
System.out.println("Validation okay");
}
catch (NoSuchElementException e) {
System.out.println("Validation down");
}
使用xpath
:
try {
driver.findElement(By.xpath("//label[@for='edit-submitted-name' and not(@class='error')]"))
System.out.println("Validation okay");
}
catch (NoSuchElementException e) {
System.out.println("Validation down");
}
答案 2 :(得分:1)
这可以通过使用简单的CSS选择器来实现,请参见以下内容
正常状态
label[for='edit-submitted-name']
错误状态
label[for='edit-submitted-name'].error