2016-06-15 17 views
1

Ich habe eine Liste von Kontrollkästchen in meiner Android App, die ich testen muss. Wenn ich also die isSelected() -Methode verwende, gibt sie immer false zurück, egal ob dieses Kontrollkästchen aktiviert ist oder nicht. Wurde versucht, findelementById() und byXpath() zu verwenden. Gleiches Ergebnis. HierSelenium isSelected() Methode für CheckBox gibt immer falsch für Android zurück

ist die Teile des Codes, was ich verwendet:

WebElement checkBox = driver.findElementById(appType + id); 
    if (!checkBox.isSelected()){ 
     Reporter.log(backupDataType + " checkbox isn't checked. clicking on it...", true); 
     ...} 

mit XPath:

checkBox = driver.findElementByXPath("//android.widget.CheckBox[@resource-id='" + appType + checkSms + "']"); 
    if (!driver.findElementByXPath("//android.widget.CheckBox[@resource-id='" + appType + checkSms + "']").isSelected()){ 
    Reporter.log(backupDataType + " checkbox isn't checked. clicking on it...", true); 
    ...} 

Pfad zum Element korrekt ist, weil es sich immer darauf klicken. Egal, ob es überprüft wurde oder nicht.

Antwort

0

Betrachtet man ein Android-Checkbox-Widget verwenden, müssen Sie versuchen, die Verwendung von getAttribute Eigenschaft eines WebElement als folgt-

WebElement element = <find element by your locator strategy>; // in your case driver.findElementByXPath("//android.widget.CheckBox[@resource-id='" + appType + checkSms + "']"); 
String checkboxAttribute = element.getAttribute("checked"); 
if(!checkboxAttribute.equalsIgnoreCase("true")) { 
    Reporter.log(backupDataType + " checkbox isn't checked. clicking on it...", true); 
    ... 
} 

PS - versuchen und Praxis eine WebElement Speichern, anstatt sie wieder zu finden, .

+0

Danke, das hat funktioniert! Ich spare normalerweise Webelemente. In diesem Fall habe ich einfach verschiedene Kombinationen ausprobiert, um es zum Laufen zu bringen. – DiTest