Attributo casella di controllo selenium “selezionato”

Sto usando Selenium in Java per testare il controllo di una casella di controllo in una webapp. Ecco il codice:

private boolean isChecked; private WebElement e; 

Dichiaro e e lo assegno all’area in cui si trova la casella di controllo.

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

La cosa strana è che getAttribute("checked") restituisce null e quindi una NullPointerException

Nel codice HTML per la casella di controllo, non è visualizzato alcun attributo checked . Tuttavia, non è il caso che tutti gli elementi di input abbiano un checked = "true" quindi questo codice dovrebbe funzionare?

Se si utilizza Webdriver, l’elemento che si sta cercando è Selezionato.

Spesso il rendering della casella di controllo non applica effettivamente l’attributo verificato se non specificato.

Quindi quello che dovresti cercare in Selenium Webdriver è questo

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

Poiché non vi è alcun elemento selezionato nell’API Java di WebDriver, il codice sopra riportato dovrebbe essere il seguente:

 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 

Puoi anche aggiungere una dichiarazione and per essere sicuro che l’opzione selezionata sia vera.

Lo farei con 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']")); 

Forse anche questo aiuta 😉

Per l’evento in cui sono presenti più caselle di controllo da cui si desidera selezionare / deselezionare solo alcune, il seguente lavoro con il driver Chrome (in qualche modo non è riuscito per IE Driver):

NOTA: le mie check-box non avevano un ID associato, il che sarebbe il modo migliore per identificarle in base alla Documentazione. Nota il ! firmare all’inizio della dichiarazione.

 if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='']")).isSelected()) { driver.findElement(By.xpath("//input[@type='checkbox' and @name= '']")).click(); } 

Il meccanismo del quadro del selenium:

Qui il selenium fa richiesta al suo server e preleva il primo sottoelemento con l’input tagname

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

Di quanto tu provi a ricevere l’attributo su quell’elemento

 object attribute = e.getAttribute("checked") 

Quindi, usa entrambi

 findElement(By.attribute("checked") 

o usare

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

PS Non ho familiarità con l’equivalente di java del selenium api, quindi alcuni metodi potrebbero essere leggermente differenti.

  1. Dichiarare una variabile.
  2. Memorizza la proprietà selezionata per il pulsante di opzione.
  3. Avere una condizione se

Assumiamo

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

Spero che questa risposta ti sia di aiuto. Fatemi sapere, se avete qualche chiarimento nel driver web CSharp Selenium.

 public boolean getcheckboxvalue(String element) { WebElement webElement=driver.findElement(By.xpath(element)); return webElement.isSelected(); }