Нажмите на элемент label
, а не на input
.
List<WebElement> checkBoxFiltersList = driver.findElements(By.xpath("//div[@class='c-checkbox']//label"));
Также с локатором, который вы используете, чтобы установить флажки неправильно, используйте:
- xpath:
//div[@class='c-checkbox']//input[@checked='true']
- css:
.c-checkbox input[checked='true']
Также измените Assert на правильную проверку, если все флажки установлены:
Assert.assertEquals(driver.findElements(By.cssSelector(".c-checkbox input[checked='true']")).size(),
checkBoxFiltersList.size());
Обновление , код с другими утверждениями, например:
WebDriverWait wait = new WebDriverWait(driver, 10);
driver.findElement(By.cssSelector(".c-sort-filter")).click();
List<WebElement> checkboxes = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector(".c-checkbox label")));
List<String> labels = checkboxes.stream().map(WebElement::getText).collect(Collectors.toList());
for (String label: labels) {
driver.findElement(By.cssSelector(String.format("label[for='%s']", label))).click();
// wait until loading disappear
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".c-spinner")));
// check if input is selected
wait.until(ExpectedConditions.elementToBeSelected(By.cssSelector(String.format("input[id='%s']", label))));
}
// check if input is selected by compare tags with checkboxes
List<String> selectedFilters = driver.findElements(By.cssSelector(".divider-view-filters-list .c-xbubble")).stream().map(WebElement::getText).collect(Collectors.toList());
Assert.assertEquals(selectedFilters, labels);