Seleziona il pulsante di opzione e selezionaBox in Selenium

โšก Riepilogo intelligente

Seleziona il pulsante di opzione e selezionaBox in Selenium Questo tutorial illustra le tecniche di WebDriver per automatizzare due dei controlli dei moduli piรน comuni. Spiega come i metodi click() e isSelected() attivano/disattivano i pulsanti radio e le caselle di controllo e illustra il funzionamento. Java e condivide suggerimenti per la risoluzione dei problemi relativi ai localizzatori fragili.

  • ๐Ÿ”˜ Radio Button Toggle: Utilizza il metodo click() dell'elemento WebElement per selezionare un pulsante radio; selezionando un'altra opzione, la precedente verrร  automaticamente deselezionata.
  • โ˜‘๏ธ casella di controllo Toggle: Lo stesso metodo click() attiva e disattiva una casella di controllo; chiamandolo due volte, la casella torna al suo stato originale.
  • โœ… Verifica statale: Chiama isSelected() per confermare lo stato corrente del toggle e verifica TRUE per i controlli selezionati e FALSE per quelli non selezionati.
  • ๐Ÿงช lavoro Java Esempio: Il programma completo guida il Guru99 demo e la casella di controllo per il login persistente di Facebook per dimostrare entrambi i flussi.
  • ๏ธ Localizzatori fotografici: Passa a By.xpath() o By.cssSelector() quando gli ID cambiano dinamicamente e aggiungi attese esplicite per evitare NoSuchElementException.

Seleziona il pulsante di opzione e selezionaBox in Selenium

Pulsante di opzione inserito Selenium

I pulsanti radio vengono attivati โ€‹โ€‹tramite il click() metodo, proprio come qualsiasi altro WebElement in SeleniumPoichรฉ in un gruppo di pulsanti di opzione puรฒ essere attiva una sola opzione alla volta, cliccando su una seconda opzione la prima viene automaticamente deselezionata.

utilizzando https://demo.guru99.com/test/radio.html come pagina di pratica, si noti che radio1.click() seleziona il pulsante di opzione โ€œOpzione1โ€. Chiamata radio2.click() quindi seleziona "Opzione2" lasciando deselezionata "Opzione1".

Selezione del pulsante radio sul Guru99 pagina demo

Come selezionare una casella di controllo in Selenium

TogglL'attivazione o la disattivazione di una casella di controllo avviene anche tramite click() Metodo. Il codice seguente fa clic due volte sulla casella di controllo "Mantienimi connesso" di Facebook e stampa TRUE quando la casella di controllo รจ attiva e FALSE quando รจ disattivata.

Selenium codice cliccando sulla casella di controllo "Mantienimi connesso" di Facebook

Output della console che mostra lo stato di attivazione/disattivazione della casella di controllo

Migliori isSelected() Questo metodo viene utilizzato per confermare se una casella di controllo รจ attivata o disattivata, un'asserzione fondamentale quando si convalida lo stato di un modulo nei casi di test.

Ecco un altro esempio di pagina: https://demo.guru99.com/test/radio.html.

Selenium codice che verifica lo stato della casella di controllo con isSelected()

Completato Code Esempio

Ecco il codice completo e funzionante che attiva/disattiva entrambi i pulsanti radio e la casella di controllo per il login persistente di Facebook.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // Declaration and instantiation of objects and variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get("https://demo.guru99.com/test/radio.html");
        WebElement radio1 = driver.findElement(By.id("vfb-7-1"));
        WebElement radio2 = driver.findElement(By.id("vfb-7-2"));

        // Radio Button 1 is selected
        radio1.click();
        System.out.println("Radio Button Option 1 Selected");

        // Radio Button 1 is de-selected and Radio Button 2 is selected
        radio2.click();
        System.out.println("Radio Button Option 2 Selected");

        // Selecting Checkbox
        WebElement option1 = driver.findElement(By.id("vfb-6-0"));

        // This will toggle the checkbox
        option1.click();

        // Check whether the checkbox is toggled on
        if (option1.isSelected()) {
            System.out.println("Checkbox is Toggled On");
        } else {
            System.out.println("Checkbox is Toggled Off");
        }

        // Selecting a Checkbox and using the isSelected method
        driver.get("https://demo.guru99.com/test/facebook.html");
        WebElement chkFBPersist = driver.findElement(By.id("persist_box"));
        for (int i = 0; i < 2; i++) {
            chkFBPersist.click();
            System.out.println("Facebook Persists Checkbox Status is - " + chkFBPersist.isSelected());
        }
        // driver.close();
    }
}

Troubleshooting

Se incontri NoSuchElementException Durante la ricerca degli elementi, significa che l'elemento non era presente nel momento in cui WebDriver ha acceduto alla pagina. Utilizza la checklist qui sotto per ripristinare rapidamente la situazione:

  1. Verifica nuovamente il tuo localizzatore utilizzando FirePath o la funzione "Ispeziona elemento" di Chrome.
  2. Verifica che il valore utilizzato nel codice corrisponda al valore corrente dell'elemento nella pagina.
  3. Alcuni elementi hanno attributi dinamici, simili a quelli che potresti vedere quando selezionare un menu a tendina in Selenium webdriverIn questi casi, preferire By.xpath() or By.cssSelector()che sono piรน affidabili ma leggermente piรน complesse.
  4. A volte il problema รจ legato ai tempi: WebDriver ha eseguito il tuo codice prima che la pagina avesse terminato il caricamento.
  5. Aggiungi un'attesa prima findElement() Utilizzo di attese implicite o esplicite per dare all'elemento il tempo di essere visualizzato.

DOMANDE FREQUENTI

Per deselezionare la casella di controllo, chiama il metodo click() sullo stesso WebElement. Non esiste un metodo di deselezione dedicato. Utilizza il metodo isSelected() prima di fare clic se desideri deselezionare la casella di controllo solo quando รจ selezionata, in modo da proteggere la logica di test.

Il metodo isSelected() restituisce true quando una casella di controllo o un pulsante di opzione รจ selezionato. Il metodo isEnabled() restituisce true quando un elemento puรฒ ricevere input dall'utente. Hanno scopi diversi: isSelected() convalida lo stato, mentre isEnabled() convalida se l'elemento accetta interazione.

Utilizza `findElements()` con un localizzatore come `By.xpath("//input[@type='checkbox']")` per ottenere tutti gli elementi Web di tipo checkbox, scorri l'elenco, controlla `isSelected()` e chiama `click()` solo su quelli che non sono selezionati. Questo evita di deselezionare accidentalmente le caselle giร  selezionate.

Gli assistenti basati sull'IA generano strategie di localizzazione, correggono automaticamente i selettori quando gli ID cambiano e suggeriscono asserzioni per lo stato di pulsanti radio e caselle di controllo. Gli strumenti di IA generano inoltre automaticamente test end-to-end di compilazione dei moduli a partire da registrazioni dello schermo, riducendo il lavoro di codifica manuale e di manutenzione dei test.

Sรฌ. Basato sull'intelligenza artificiale Selenium Gli strumenti analizzano il DOM, apprendono gli attributi stabili e riscrivono i selettori XPath o CSS quando gli ID cambiano tra una versione e l'altra. Questa capacitร  di auto-riparazione garantisce il superamento dei test dei controlli dei moduli senza la necessitร  di aggiornamenti manuali dei localizzatori dopo ogni modifica all'interfaccia utente.

Riassumi questo post con: