I am writing a Xamarin.UITest for a cross-platform Xamarin.iOS and Xamarin.Android app.
In my Xamarin.UITest, how do I verify the following properties:
- On Xamarin.Android, how can I verify the
Hint
property for an EditText
?
- On Xamarin.iOS, how can I verify the
Placeholder
property for a UITextField
?
Sample Code
string GetPlaceholderText(string entryAutomationId)
{
if (app is AndroidApp)
{
return app.Query(x => x.Marked(entryAutomationId)?.Invoke("getHint"))?.FirstOrDefault()?.ToString();
}
return app.Query(x => x.Marked(entryAutomationId)?.Invoke("placeholder"))?.FirstOrDefault()?.ToString();
}
Sample App
Here is the same code-snippet in a sample app that demostrates how to accomplish this task in a cross-platform Xamarin.UITest:
https://github.com/brminnick/FaceOff/blob/master/UITests/Pages/WelcomePage.cs#L73
Explaination
In Xamarin.UITest, to retrieve text from an Android EditText
or a iOS UITextField
, you must use the Invoke
method to access the native Java Android API and native ObjectiveC iOS API. In our Invoke
statements, we can take advantage of the native methods (getHint()
on Android, and placeholder
on iOS) to retrieve the string.
All tests were validated via Xamarin Test Cloud. The test report is viewable here.