Подтвердить что ты не робот

Атрибут 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", поэтому этот код должен работать?

4b9b3361

Ответ 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();
    }