Добрый день, всем.
Столкнулся с такой проблемой:
Isselected() всегда возвращает false, причем если элемент Чекбокса нажат.
Код:
List<WebElement> conris = driver.findElements(By.cssSelector("label.prettyCheckbox:not([for*=Edit])"));
for (int i=0; i < 21; i++ )
{
WebElement conri = conris.get(4);
conri.click();
wait(1);
System.out.println(conri.isSelected());
wait(3);
}
Где-то читал, что надо устанавливать значение в True, но setselected - уже не работает ((
Кто подскажет как быть?
интересно, а есть публичный доступ к вашей странице из интернета?
<div class="chkboxSpaser">
<span class="" style=" width:95px;display:inline-block">Абоненты</span>
<input class="hiddenCheckbox" id="roleAbonentsRead" type="checkbox" name="option1">
<label class="prettyCheckbox checkbox list" for="roleAbonentsRead">Чтение</label>
<span class="spacer"></span>
<input class="hiddenCheckbox" id="roleAbonentsWrite" type="checkbox" name="option2">
<label class="prettyCheckbox checkbox list" for="roleAbonentsWrite">Запись</label>
</div>
Вот исходный код.
Там есть скрытый класс (чекбоксов), но у нас форма чекбоксов своя переделанная.
На странице две формы с чекбоксами, поэтому выбирал: label.prettyCheckbox:not([for*=Edit])
C одним элементом тоже пробывал, но в другой форме (Edit)
driver.findElement(By.xpath("//form[@id='editRoleForm']/div[7]/div[5]/label[2]")).click();
WebElement good = driver.findElement(By.xpath("//form[@id='editRoleForm']/div[7]/div[5]/label[2]"));
System.out.println(good.isSelected());
За длинный xpath - Sorry!
Так проверил на другом проекте, isselect() работает (((
В чем может быть проблема у меня?
может быть в момент проверки происходит javascript ошибка, можете проследить?
стоп, так вы же выбираете label.prettyCheckbox:not([for*=Edit])
это не input элементы, а вебдрайвер проверяет input элементы.
фактически вам надо проверять, ваши скрытие поля <input class="hiddenCheckbox" id="roleAbonentsWrite" type="checkbox" name="option2">
Кому надо:
List<WebElement> conris = driver.findElements(By.cssSelector("label.prettyCheckbox:not([for*=Edit])"));
//Инициировали группу Random
Random random = new Random();
//Цикл, который будет повторяться 21 раз.
//
for (int i=0; i < 21; i++ )
{
int conriIndex = random.nextInt(conris.size());
WebElement conri = conris.get(conriIndex);
//Находим класс, а в нем слово checked
if (conri.getAttribute("class").contains("checked"))
continue;
conri.click();
}
Всем спасибо!
странный метод, если честно.
Скажи если после ПЕРВОГО захода на страницу чекбокс анчекнут то есть ли атрибут "checked=' ' " или есть "checked='false' или его нет вообще?
Отдельного атрибута checked=true/false нету.
Есть класс: "prettyCheckbox checkbox list" - это когда чекбокс не активен.
"prettyCheckbox checkbox list checked" - когда активен.
Я и пользовался getAttribute.
Если можно это сделать иначе, то прошу написать.
я делал когда-то свой метод getCheckboxValue, в который передавал вебелемент, после чего через getAttribute проверял значение этого вебелемента и возвращал boolean true or false значение.