2016-04-15 10 views
3

Ich habe gerade angefangen, die Verwendung von Appium für die Testautomatisierung einer nativen Android App zu untersuchen. In dieser App enthält die XML-Layout für die Benutzeroberfläche die folgende Erklärung für eine EditText Kontrolle:Appium getText() gibt Android zurück: Hinweis Wert von EditText?

<EditText 
    android:id="@+id/inputText" 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="0.5" 
    android:inputType="text|textMultiLine" 
    android:hint="Type or paste text here" 
    android:text="" /> 

Wenn die App läuft, ist der Textwert des EditText offensichtlich leer, so dass es den Hinweis Wert anzeigt ("Typ oder Text hier einfügen "). Wenn ich in meinem Testfall getText() für diesen EditText aufruft, ist der zurückgegebene Rückgabewert kein leerer String, wie ich es erwarten würde. Stattdessen bekomme ich den Hinweiswert des EditText zurück ("Text hier eingeben oder einfügen"). Dies ist das erste Mal, dass ich Appium verwendet habe, daher ist es möglich, dass dies das erwartete Verhalten ist. Aber wenn das der Fall ist, wie behaupte ich, dass der Textwert des EditText tatsächlich leer ist, wenn getText() den Wert des Hinweises zurückgibt? Ich nehme an, ich könnte behaupten, dass der von getText() zurückgegebene Wert gleich "Text hier eingeben oder einfügen" ist, aber wenn der Benutzer diesen genauen Text eingegeben hat, wie würde ich dann den Unterschied erkennen?

Antwort

1

getText() Gibt den Wert zurück, der einem Element zugewiesen wurde (in Ihrem Fall android:hint), das zu dem Zeitpunkt angezeigt wird, zu dem es vom UI-Thread gerendert wird.

in Ihrem Fall zu behaupten, ist Hinweis ein Text, der nicht dynamisch konfiguriert ist, so können Sie den Text als

if(element.getText().equals("Type or paste text here")) 
    // hint being displayed 
else if(element.getText() == "") 
// the text is left empty 

nun überprüfen, ob der Benutzer die gleichen Namen wie der Hinweis des Elements konfigurieren kann. Sie müssten der Anwendung wahrscheinlich ein besseres Design geben, um dies zu vermeiden. Appium könnte nur ein Medium sein, um Ihnen die Informationen zurück zu geben, die in die Anwendungsoberfläche eingegeben wurden.

+0

Danke! Du hast mir bestätigt, dass dies das erwartete Verhalten ist und das hilft sehr. – user685869