Ich verwende Selenium in Java, um das Aktivieren eines Kontrollkästchens in einer Webanwendung zu testen. Hier ist der Code:
private boolean isChecked;
private WebElement e;
Ich deklariere e
und ordne es dem Bereich zu, in dem sich das Kontrollkästchen befindet.
isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");
Was seltsam ist, dass das getAttribute("checked")
zurückkehrt null
und daher aNullPointerException
Im HTML für das Kontrollkästchen wird kein checked
Attribut angezeigt. Ist es jedoch nicht so, dass alle input
Elemente eine haben, checked = "true"
sodass dieser Code funktionieren sollte?
quelle
isSelected()
Methode in der API nicht gesehen habe. Ich habe im Wesentlichen versucht, meine eigene Methode dafür zu schreiben, als es sie bereits gab. Vielen Dank.if ( !driver.findElement(By.id("idOfTheElement")).isSelected() ) { driver.findElement(By.id("idOfTheElement")).click(); }
quelle
if(checkBox.getAttribute("checked") != null) // if Checked checkBox.click(); //to Uncheck it
Sie können auch eine
and
Anweisung hinzufügen , um sicherzustellen, dass diese Option aktiviert ist.quelle
Ich würde es mit cssSelector machen:
// 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']"));
Vielleicht hilft das auch ;-)
quelle
Für den Fall, dass es mehrere Kontrollkästchen gibt, aus denen Sie nur einige aktivieren / deaktivieren möchten, funktionieren die folgenden Funktionen mit dem Chrome-Treiber (für IE-Treiber irgendwie fehlgeschlagen):
HINWEIS: Mit meinen Kontrollkästchen war keine ID verknüpft. Dies ist der beste Weg, um sie gemäß der Dokumentation zu identifizieren. Beachten Sie das
!
Zeichen am Anfang der Anweisung.if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected()) { driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click(); }
quelle
Angenommen
private string isChecked; private webElement e; isChecked =e.findElement(By.tagName("input")).getAttribute("checked"); if(isChecked=="true") { } else { }
Hoffe, diese Antwort wird Ihnen helfen. Lassen Sie mich wissen, wenn Sie Erläuterungen zum CSharp Selenium-Webtreiber haben.
quelle
public boolean getcheckboxvalue(String element) { WebElement webElement=driver.findElement(By.xpath(element)); return webElement.isSelected(); }
quelle
isSelected()
Methode zu verwenden. Ihr Code beantwortet die Frage jedoch nicht direkt. Es wäre gut, wenn Sie es so ändern würden, dass es mit dem Code im oberen Beitrag übereinstimmt, oder (auf Englisch) erklären, welche Änderungen Sie empfehlen.Der Mechanismus des Selengerüsts:
Hier stellt Selen eine Anfrage an seinen Server und ruft das erste Unterelement mit der Eingabe des Tagnamens ab
WebElement e = e.findElement(By.tagName("input"));
Dann versuchen Sie, ein Attribut für dieses Element zu erhalten
object attribute = e.getAttribute("checked")
Also entweder verwenden
findElement(By.attribute("checked")
oder verwenden
findElement(By.xpath("\\input[@checked='true']")
PS Ich bin nicht mit Javas Äquivalent zu Selenium API vertraut, daher kann eine Methode etwas anders benannt werden.
quelle
isSelected
. Ich versuche nicht, ein Kontrollkästchen zu finden, das aktiviert ist. Wie auch immer, ich werde nur eineisSelected
try
catch
NullPointerException