Xamarin.UITest: How To Verify Placeholder/Hint Text

1k views Asked by At

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?
1

There are 1 answers

0
Brandon Minnick On BEST ANSWER

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.