J'utilise Selenium dans Java pour tester la vérification d'une case à cocher dans une application Web. Voici le code:
private boolean isChecked;
private WebElement e;
Je déclare e
et l'assigne à la zone où se trouve la case à cocher.
isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");
Ce qui est étrange, c'est que getAttribute("checked")
renvoie null
et donc un NullPointerException
Dans le code HTML de la case à cocher, aucun attribut checked
n'est affiché. Cependant, tous les éléments input
n'ont-ils pas un checked = "true"
De sorte que ce code devrait fonctionner?
Si vous utilisez Webdriver, l'élément que vous recherchez est sélectionné.
Souvent, le rendu de la case à cocher n'applique pas l'attribut coché, sauf indication contraire.
Donc, ce que vous recherchez dans Selenium Webdriver est ceci
isChecked = e.findElement(By.tagName("input")).Selected;
Comme il n'y a pas de sélection dans WebDriver Java, le code ci-dessus devrait être le suivant:
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 vous assurer que la case cochée est vraie.
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 ça aide aussi ;-)
Si vous souhaitez sélectionner/désélectionner plusieurs cases à cocher, les opérations suivantes fonctionnent avec le pilote Chrome (a échoué pour IE Pilote):
REMARQUE: aucun identifiant n'est associé à mes cases à cocher, ce qui serait le meilleur moyen de les identifier conformément à la documentation. Noter la !
signe au début de la déclaration.
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 envoie une requête à son serveur et récupère le premier sous-élément avec une entrée de type
WebElement e = e.findElement(By.tagName("input"));
Alors vous essayez de recevoir l'attribut sur cet élément
object attribute = e.getAttribute("checked")
Donc soit utiliser
findElement(By.attribute("checked")
ou utiliser
findElement(By.xpath("\\input[@checked='true']")
P.S. Je ne connais pas l'équivalent Java de Selenium api en Java; certaines méthodes peuvent donc être nommées légèrement différentes.
public boolean getcheckboxvalue(String element)
{
WebElement webElement=driver.findElement(By.xpath(element));
return webElement.isSelected();
}
Assumons
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 sera une aide pour vous. Faites-moi savoir, si vous avez des précisions dans le pilote Web CSharp Selenium.