Селеновый флажок атрибут «проверен» - PullRequest
64 голосов
/ 18 ноября 2011

Я использую Selenium в Java для проверки проверки флажка в веб-приложении. Вот код:

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

Ответы [ 8 ]

109 голосов
/ 19 ноября 2011

Если вы используете Webdriver, то элемент, который вы ищете, выбран.

Часто при визуализации флажка фактически не применяется проверенный атрибут, если он не указан.

Итак, что бы вы искали в Selenium Webdriver, это

isChecked = e.findElement(By.tagName("input")).Selected;

Поскольку в Java API WebDriver нет Selected, приведенный выше код должен выглядеть следующим образом:

isChecked = e.findElement(By.tagName("input")).isSelected();
11 голосов
/ 03 марта 2014
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
6 голосов
/ 23 марта 2012
 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 

Вы также можете добавить оператор and, чтобы убедиться, что установлен флажок.

5 голосов
/ 23 марта 2012

Я бы сделал это с помощью 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']"));

Может быть, это тоже помогает; -)

1 голос
/ 22 мая 2014

Для случая, когда есть несколько флажков, из которых вы хотите выбрать / отменить выбор только нескольких, следующая работа с драйвером Chrome (как-то не удалось для драйвера IE):

ПРИМЕЧАНИЕ:У моих флажков не было идентификатора, связанного с ними, что было бы лучшим способом идентифицировать их согласно Документации.Обратите внимание на знак ! в начале оператора.

if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected()) 
{
  driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click();
}
0 голосов
/ 14 февраля 2017
public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }
0 голосов
/ 05 ноября 2015
  1. Объявление переменной.
  2. Сохранение отмеченного свойства для переключателя.
  3. Наличие условия if.

Допустим,

private string isChecked; 
private webElement e; 
isChecked =e.findElement(By.tagName("input")).getAttribute("checked");
if(isChecked=="true")
{

}
else 
{

}

Надеюсь, этот ответ поможет вам.Дайте мне знать, если есть какие-либо разъяснения в веб-драйвере CSharp Selenium.

0 голосов
/ 18 ноября 2011

Механизм структуры селен:

Здесь селен делает запрос на свой сервер и извлекает первый субэлемент с вводом тэга

WebElement e = e.findElement(By.tagName("input"));

Чем вы пытаетесь получить атрибут для этого элемента

object attribute = e.getAttribute("checked")

Так что или используйте

findElement(By.attribute("checked")

или используйте

findElement(By.xpath("\\input[@checked='true']")

PS Я не знаком с Java-эквивалентом API селен, поэтому некоторые методы могут быть названы немного по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...