Атрибут checkbox селена "checked"
Я использую Selenium в Java для проверки проверки флажка в webapp. Здесь код:
private boolean isChecked;
private WebElement e;
Объявляю e
и присваиваю его области, в которой установлен флажок.
isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");
Странно, что getAttribute("checked")
возвращает null
и, следовательно, NullPointerException
В блоке HTML для этого флажка не отображается атрибут checked
. Однако не так ли, что все элементы input
имеют checked = "true"
, поэтому этот код должен работать?
Ответы
Ответ 1
Если вы используете Webdriver, то выбран пункт, который вы ищете.
Часто в рендеринге флажка фактически не применяется проверенный атрибут, если не указано.
Так что вы бы искали в Selenium Webdriver, это
isChecked = e.findElement(By.tagName("input")).Selected;
Поскольку в WebDriver Java API нет выделенного кода, приведенный выше код должен быть следующим:
isChecked = e.findElement(By.tagName("input")).isSelected();
Ответ 2
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
driver.findElement(By.id("idOfTheElement")).click();
}
Ответ 3
if(checkBox.getAttribute("checked") != null) // if Checked
checkBox.click(); //to Uncheck it
Вы также можете добавить оператор and
, чтобы убедиться, что флажок имеет значение true.
Ответ 4
Я бы сделал это с помощью cssSelector:
// for all checked checkboxes
driver.findElements(By.cssSelector("input:checked[type='checkbox']"));
// for all notchecked checkboxes
driver.findElements(By.cssSelector("input:not(:checked)[type='checkbox']"));
Возможно, это также помогает; -)
Ответ 5
В случае, когда есть несколько флажков, из которых вы хотите выбрать/отменить выбор только нескольких, следующая работа с драйвером Chrome (как-то не удалось для IE Driver):
ПРИМЕЧАНИЕ. Мои флажки не имеют идентификатора, связанного с ними, что было бы лучшим способом идентифицировать их в соответствии с Документацией. Обратите внимание на знак !
в начале инструкции.
if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected())
{
driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click();
}
Ответ 6
Механизм структуры селена:
Здесь selenium запрашивает свой сервер и выбирает первый подэлемент с вводом тэгов
WebElement e = e.findElement(By.tagName("input"));
Чем вы пытаетесь получить атрибут этого элемента
object attribute = e.getAttribute("checked")
Итак, используйте
findElement(By.attribute("checked")
или используйте
findElement(By.xpath("\\input[@checked='true']")
P.S. Я не знаком с java-эквивалентом selenium api, поэтому некоторый метод можно назвать немного другим.
Ответ 7
- Объявить переменную.
- Сохраните свойство checked для переключателя.
- У вас есть условие if.
Предположим, что
private string isChecked;
private webElement e;
isChecked =e.findElement(By.tagName("input")).getAttribute("checked");
if(isChecked=="true")
{
}
else
{
}
Надеюсь, этот ответ поможет вам. Дайте мне знать, если у вас есть какие-либо разъяснения в веб-драйвере CSharp Selenium.
Ответ 8
public boolean getcheckboxvalue(String element)
{
WebElement webElement=driver.findElement(By.xpath(element));
return webElement.isSelected();
}