web-dev-qa-db-fra.com

Attribut de case à cocher Sélénium "coché"

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?

65
jamesfzhang

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();
111
CBRRacer
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
12
ShutterSoul
 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.

7
Aditya

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 ;-)

6
Tarken

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();
}
1
user2196798

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.

0
VMykyt
public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }
0
akhilesh gulati
  1. Déclarer une variable.
  2. Stockez la propriété cochée pour le bouton radio.
  3. Avoir un si condition.

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.

0
Balaji