Selenium checkbox атрибут " проверено"



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



private boolean isChecked;
private WebElement e;


Я объявляю e и назначьте его в область, где установлен флажок.



isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");


что самое странное заключается в том, что getAttribute("checked") возвращает null и поэтому a NullPointerException



в HTML для флажка нет отображается. Однако, это не так, что все input элементы checked = "true" так этот код должен работать?

947   8  

8 ответов:

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

часто в рендере флажка фактически не применяется атрибут checked, если он не указан.

Так что вы будете искать в Selenium Webdriver это

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

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

isChecked = e.findElement(By.tagName("input")).isSelected();
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 

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

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

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

для события, где есть несколько флажков, из которых вы хотите выбрать/отменить выбор только нескольких, следующая работа с драйвером 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();
}

механизм рамки Селена:

здесь selenium делает запрос к своему серверу и получает первый подэлемент с tagName input

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 Селена API, поэтому метод может быть назван немного отличаться.

  1. объявить переменную.
  2. сохраните проверенное свойство для переключателя.
  3. есть условие if.

предположим

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

}
else 
{

}

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

public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }

Comments

    Ничего не найдено.