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" так этот код должен работать?
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, поэтому метод может быть назван немного отличаться.
- объявить переменную.
- сохраните проверенное свойство для переключателя.
- есть условие 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