Здравствуйте, подскажите, пожалуйста, как проверить, что чекнут/не чекнут определенный чекбокс.
Пробую
Assert.assertFalse(elems.get(1).isSelected ());
Assert.assertTrue(elems.get(1).isSelected());
Но тут ошибка, get поддчеркивает. Не могу понять в чем причина.
Multiple markers at this line
- Line breakpoint:TestKabinetReclamodatelya [line: 258] - testMoyaStroyka()
- Line breakpoint:TestKabinetReclamodatelya [line: 257] - testMoyaStroyka()
- The method get(String) in the type RemoteWebDriver is not applicable for the arguments (int)"
//Чекаем все чекбоксы, выбирая все письма
WebElement oCheckBox = driver.findElement(By.cssSelector(".checkbox__fake"));
oCheckBox.click();
//Нажимаем на ссылку "Отметить как прочитанные"
driver.findElement(By.linkText("Отметить как прочитанные")).click();
java.util.List<WebElement> checkbox = driver.findElements(By.cssSelector(".checkbox__fake"));
//Выбираем чекбоксы 1,2,3,4,5
((WebElement) checkbox.get(1)).click();
((WebElement) checkbox.get(2)).click();
((WebElement) checkbox.get(3)).click();
((WebElement) checkbox.get(4)).click();
((WebElement) checkbox.get(5)).click();
//Проверяем что чекбоксы сняты
Assert.assertFalse(elems.get(6).isSelected ());
//Проверяем что чекбоксы чекнут
Assert.assertTrue(elems.get(1).isSelected());
Подскажите, пожалуйста, в первом случае, когда проверяем, что чекбоксы все чекнуты, то если в assertTrue(hasError); выставить False, то тест не проходит((…Хотя чекбоксы все чекнуты…
А так все работает…
//Проверяем, что все чекбоксы чекнуты
boolean hasError = false;
for (WebElement checkbox4: driver.findElements(By.cssSelector(".checkbox__fake"))) {
if (!checkbox4.isSelected()) {
hasError = true;
break;
}
}
assertTrue(hasError);
//Чекаем на верхний чекбокс, чтобы снять выбор чекбоксов
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
WebElement oCheckBox2= driver.findElement(By.xpath(".//*[@class='table table--hanging table--inbox']/thead/tr/th/label/div"));
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
oCheckBox2.click();
//Проверяем, что все чекбоксы не чекнуты
hasError = false;
''''java
for (WebElement checkbox5: driver.findElements(By.cssSelector(".checkbox__fake"))) {
if (checkbox5.isSelected()) {
hasError = true;
break;
}
}
assertFalse(hasError);
Я не верю в магию. Если assertFalse(hasError); выплевывает эксепшен, значит как минимум 1 чекбокс остался нечекнутым. Такое возможно, если ваш локатор оказался совсем не уникальным для этой серии чекбоксов.
Самая примитивная проверка моей теории: findElements(...).size(). Более детально можно посмотреть в дебаге. При этом, FirePath также должен показать кол-во найденных нодов по данному локатору.
Прошу заметить также, что данные проверки не отвечают на вопрос - все ли чекбоксы чекнуты / не чекнуты, скорее - есть ли хотя бы 1 чекнутый / нечекнутый чекбокс.