2016-04-18 22 views
1

Ich versuche, einen UI-Test auf einem Xamarin Formulare einzurichten ProjekteUITest auf Xamarin Forms styleid als Etikett zu schreiben, anstatt ID

ich die Führung here gefolgt und hinzugefügt styleid mein Benutzersteuer

<Entry x:Name="username_name" 
     StyleId="username_styleid" 
     Text="{Binding Username, Mode=TwoWay}" 
     IsEnabled="{Binding IsBusy, Converter={StaticResource ReverseBoolConverter}}" 
     Style="{StaticResource TextboxLight}" 
     Placeholder="{Binding UsernameLabel}" /> 

ich habe Code in das Android MainActivity

Forms.ViewInitialized += (sender, e) => { 
    if (!string.IsNullOrWhiteSpace(e.View.StyleId)) 
    { 
     e.NativeView.ContentDescription = e.View.StyleId; 
    } 
}; 

Wenn ich den Test und verwenden REPL laufen, kann ich sehen, dass die styleid Ausgabe als Label-Eigenschaft war eher th eine eine ID-Eigenschaft

enter image description here

Hat jemand diese Arbeit zu bekommen verwaltet?

Antwort

4

Das funktioniert wie vorgesehen. Auf iOS sehen Sie den Wert als id; Auf Android wird es als label angezeigt.

app.Query(c=>c.Marked("username_styleid")) funktioniert über Plattformen hinweg. Die kürzere Form von app.Query("username_styleid") macht das gleiche.

Marked finden die Elemente mit dem angegebenen Wert im Feld id unter iOS; die label Feld auf Android und als text auf entweder. Daher ist es wichtig, dass Sie die StyleID (oder AutomationId) von dem in Ihrer App angezeigten Text unterscheiden.

+0

Danke Glen. Ich fing an, dies zu erkennen, aber es ist schön, es bestätigt zu haben. –

2

Die Verwendung der StyleId wird in Kürze mit 2.2.0 veraltet sein.

Ich persönlich habe es noch nicht getestet, aber

AutomationId Unterstützung

Xamarin.Forms hat nun erstklassige Unterstützung für die Einstellung Automatisierung Identifikatoren für die Verwendung mit Xamarin UITest oder anderen Test-Frameworks. Wenn Sie einfach die AutomationID-Eigenschaft festlegen, sollte das Automation Framework Ihre Steuerelemente finden und mit ihnen interagieren können.

Nicht sicher, was eine AutomationId jedoch übersetzt, hoffentlich eine ID.

+0

Danke Adam, gute Nachrichten. Ich hoffe, es funktioniert gut, da wir eine Menge UI-Tests zu schreiben haben. –

+0

Habe gerade mit 2.2.04-pre2 und der neuen AutomationId-Eigenschaft gespielt. Leider gibt es immer noch als ein Etikett, keine ID –

+0

Gut, um es oben bestätigt zu sehen. Ich wollte gerade nachsehen, aber ich hatte das Gefühl, dass es Label sein sollte. –