2016-04-07 11 views
0

Ging durch die Java-Dokumentation von getAttribute.Verwenden von getAttribute, um den Klassennamen eines Webelements im systemeigenen Kontext abzurufen

Schließlich werden die folgenden häufig falsch aktivierte Attribut/Eigenschaft Namen ausgewertet werden wie erwartet: Konnte den Punkt wie erwähnt verstehen „Klasse“ „Nur-Lese“

könnte, wenn webElement.getAttribute("class") jemand bestätigen soll den Klassennamen des Elements zurückgeben oder nicht?

bearbeiten: Auf versuchen, diese selbst

System.out.println("element " + webElement.getAttribute("class")); 

Ich erhalte

org.openqa.selenium.NoSuchElementException

Hinweis: Das Element auf existiert der Bildschirm, da ich auf dem Element erfolgreich Aktionen ausführen kann zt:

webElement.click(); //runs successfully 

Code:

WebElement webElement = <findElement using some locator strategy>; 
System.out.println("element " + webElement.getAttribute("class")); 
+1

, warum Sie nicht einfach ausprobieren? – KjetilNordin

+0

Irgendein Grund, es nicht selbst zu prüfen? –

+0

@KjetilNordin: Dies ist mehr zu klären/korrigieren Sie die Doku-Anweisung – nullpointer

Antwort

1

So wurde die Antwort auf das Problem auf GitHub in der Problemliste von appium/java-Client von @SergeyTikhomirov beantwortet. Einfache Lösung für dieses Problem ist, den Zugriff auf die Eigenschaft classname, wie folgend:

webElement.getAttribute("className")); //instead of 'class' as mentioned in the doc 

Methode Kern Implementierung hier: AndroidElement

-1

Nach this answer, ja Sie es richtig machen. Ihre org.openqa.selenium.NoSuchElementException wird geworfen, weil Selen das Element selbst nicht finden kann.

Die von Ihnen gepostete Seitennummer, etwa webElement.click() funktioniert tatsächlich, ist leider nicht in dem von Ihnen geposteten Code enthalten. Da es kein Teil der eigentlichen Frage ist, überlasse ich diese Antwort, ohne sie anzusprechen.

+0

das Element ist da, es ist nur das Appium wirft den Fehler mit inkorrekten Attribut sowie – nullpointer

+0

Oh ja, Sie haben um Bestätigung gebeten, wenn Ihr Code korrekt war. Die einzige Frage in Ihrem Beitrag war die Bestätigung, dass 'webElement.getAttribute (" class ")' der richtige Weg war, dies zu tun. Ich habe deine Frage richtig beantwortet, mit einer Referenz. Wenn Sie die gewünschte Antwort nicht erhalten haben, liegt das daran, dass Sie die Frage, für die Sie eine Antwort haben wollten, nicht gestellt haben. – KjetilNordin

+0

die Antwort war "Nein, ich habe es nicht richtig gemacht" hat die richtigen Schritte, haben als Antwort auch geteilt. Vielen Dank – nullpointer

0
public String getStringAttribute(final String attr) 
    throws UiObjectNotFoundException, NoAttributeFoundException { 
String res; 
if (attr.equals("name")) { 
    res = getContentDesc(); 
    if (res.equals("")) { 
    res = getText(); 
    } 
} else if (attr.equals("contentDescription")) { 
    res = getContentDesc(); 
} else if (attr.equals("text")) { 
    res = getText(); 
} else if (attr.equals("className")) { 
    res = getClassName(); 
} else if (attr.equals("resourceId")) { 
    res = getResourceId(); 
} else { 
    throw new NoAttributeFoundException(attr); 
} 
return res; 

}