Attribut Selenium checkbox " vérifié"

J'utilise Selenium en Java pour tester la vérification d'une case à cocher dans une webapp. Voici le code:

private boolean isChecked;
private WebElement e;

Je déclare e et l'attribue à la zone où se trouve la case à cocher.

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

Ce qui est bizarre, c'est que getAttribute("checked") retourne null et donc NullPointerException

Dans le code HTML de la case à cocher, aucun attribut checked n'est affiché. Cependant, n'est-ce pas le cas que tous les éléments input ont un checked = "true" donc ce code devrait fonctionner?

58
demandé sur jamesfzhang 2011-11-18 23:08:24

8 réponses

Si vous utilisez Webdriver, L'élément que vous recherchez est sélectionné.

Souvent, dans le rendu de la case à cocher n'applique pas réellement l'attribut vérifié sauf si spécifié.

Donc ce que vous chercheriez dans Selenium Webdriver est ceci

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

Comme il n'y a pas sélectionné dans WebDriver Java API, le code ci-dessus devrait être comme suit:

isChecked = e.findElement(By.tagName("input")).isSelected();
96
répondu CBRRacer 2017-06-27 10:45:05
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
10
répondu ShutterSoul 2014-03-03 04:19:56
 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 

Vous pouvez également ajouter une instruction and pour être sûr que checked est vrai.

6
répondu Aditya 2012-03-23 09:15:54

, je le ferais avec 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']"));

Peut-être que cela aide aussi ;-)

4
répondu Tarken 2015-05-25 06:57:05

Pour l'événement où il y a plusieurs cases à cocher à partir desquelles vous souhaitez sélectionner / désélectionner seulement quelques-unes, le travail suivant avec le pilote Chrome (en quelque sorte échoué pour le pilote IE):

NOTE: mes cases à cocher n'avaient pas D'identifiant associé, ce qui serait le meilleur moyen de les identifier en fonction de la Documentation. Notez le signe ! au début de l'instruction.

if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected()) 
{
  driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click();
}
1
répondu user2196798 2014-05-22 19:13:01

Le mécanisme du cadre de sélénium:

Ici selenium fait une requête au serveur its et récupère le premier sous-élément avec l'entrée tagname

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

Que vous essayez de recevoir l'attribut sur cet élément

object attribute = e.getAttribute("checked")

Donc, utilisez

findElement(By.attribute("checked")

Ou utiliser

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

P.S. Je ne suis pas familier avec l'équivalent de l'api Selenium de java, donc une méthode peut être nommée légèrement différente.

0
répondu VMykyt 2011-11-18 19:22:28
  1. déclare une variable.
  2. stockez la propriété cochée pour le bouton radio.
  3. ont une condition if.

Supposons

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

}
else 
{

}

J'espère que cette réponse vous aidera. Faites-moi savoir, si vous avez des éclaircissements dans le pilote web Csharp Selenium.

0
répondu Balaji 2015-11-05 05:44:37
public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }
0
répondu akhilesh gulati 2017-02-14 12:38:03