Vælg radioknap og markerBox in Selenium
⚡ Smart opsummering
Vælg radioknap og markerBox in Selenium dækker WebDriver-teknikkerne til automatisering af to af de mest almindelige formularkontroller. Denne vejledning forklarer, hvordan metoderne click() og isSelected() slår radioer og afkrydsningsfelter til/fra, og gennemgår arbejdsmetoder. Java kode og deler fejlfindingstips til skrøbelige lokaliseringsinstrumenter.

Radioknap ind Selenium
Radioknapper slås til ved hjælp af click() metode, ligesom ethvert andet WebElement i SeleniumDa kun én indstilling i en alternativgruppe kan være aktiv ad gangen, fravælges den første automatisk, hvis du klikker på en anden indstilling.
Ved brug af https://demo.guru99.com/test/radio.html som en øvelsesside, bemærk at radio1.click() vælger alternativknappen “Valgmulighed1”. Opkald radio2.click() vælger derefter "Valgmulighed2", mens "Valgmulighed1" ikke er valgt.
Sådan vælger du et afkrydsningsfelt i Selenium
TogglAt slå et afkrydsningsfelt til eller fra gøres også ved hjælp af click() metode. Koden nedenfor klikker to gange på Facebooks afkrydsningsfelt "Hold mig logget ind" og udskriver SAND, når afkrydsningsfeltet er slået til, og FALSK, når det er slået fra.
isSelected() Metoden bruges til at bekræfte, om et afkrydsningsfelt er slået til eller fra – en vigtig påstand ved validering af formulartilstand i testtilfælde.
Her er en anden eksempelside: https://demo.guru99.com/test/radio.html.
Komplet Code Eksempel
Her er den komplette fungerende kode, der slår både radioknapper og afkrydsningsfeltet "persist-login" til og fra på 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();
}
}
Fejlfinding
Hvis du støder på NoSuchElementException Når man finder elementer, betyder det, at elementet ikke var til stede, da WebDriveren tilgik siden. Brug tjeklisten nedenfor til at gendanne hurtigt:
- Tjek din lokator igen ved hjælp af FirePath eller Inspect Element i Chrome.
- Bekræft, at den værdi, du brugte i koden, matcher den aktuelle værdi af elementet på siden.
- Nogle elementer har dynamiske egenskaber, der ligner dem, du ser, når du vælg en rullemenu i Selenium webdriverI disse tilfælde foretrækkes
By.xpath()orBy.cssSelector(), som er mere pålidelige, men lidt mere komplekse. - Nogle gange er problemet timingen — WebDriveren udførte din kode, før siden var færdigindlæst.
- Tilføj en ventetid før
findElement()brug af implicitte eller eksplicitte ventetider for at give elementet tid til at gengives.




