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?
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();
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
Vous pouvez également ajouter une instruction and
pour être sûr que checked est vrai.
, 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 ;-)
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();
}
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.
- déclare une variable.
- stockez la propriété cochée pour le bouton radio.
- 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.
public boolean getcheckboxvalue(String element)
{
WebElement webElement=driver.findElement(By.xpath(element));
return webElement.isSelected();
}