Тест пользовательского интерфейса Xamarin выдает ошибку: запрос помеченного (нажмите меня!) Дал 0 результатов

Я реализую структуру шаблона объекта страницы для образца приложения Xamarin, и когда я попытался запустить простой тест для проверки нажатия кнопки, я получаю следующую ошибку: Запрос для отмеченного («Щелкните меня!») Дал 0 результатов.

Я пробовал запустить тест без настройки фреймворка, и он работал нормально, но после настройки фреймворка выдает ошибку.

Это мой файл объекта страницы

namespace SampleUITests.Pages
{
    using Query = System.Func<Xamarin.UITest.Queries.AppQuery, Xamarin.UITest.Queries.AppQuery>;
    public class WelcomePage : BasePage
    {
        readonly Query ClickButton;
        readonly Query Label;
        protected override PlatformQuery Trait => new PlatformQuery
        {
            Android = x => x.Marked("Click Me!")
            //Can add iOS trait as well 
        };
        public WelcomePage()
        {
            if (OnAndroid)
            {
                Label = x => x.Marked("Welcome To Xamarin.Forms!");
                ClickButton = x => x.Marked("Click Me!");
            }

            if (OniOS)
            {
                //add iOS identifiers here
            }

        }
        public void OnClick()
        {
            app.Repl();
            app.WaitForElement(ClickButton);
            app.Tap(ClickButton);
            Assert.Equals("You clicked 1 times.", app.Query(ClickButton).First().Text);
        }

    }
}

Это мой код, в котором я вызываю объект для объекта Page и запускаю тест.

namespace SampleUITests
{
    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class Tests : BaseTestFixture
    {

        public Tests(Platform platform) : base(platform)
        {
            //this.platform = platform;
        }

        [Test]
        public void VerifyButtonClick()
        {
            WelcomePage welcomepage = new WelcomePage();
            welcomepage.OnClick();
        }

    }
}

Я ожидаю пройти тест, который проверяет нажатие кнопки и текст на кнопке (вы нажали 1 раз.), Но я получаю следующую ошибку:

Android test running Xamarin.UITest version: 3.0.3 
Initializing Android app on device emulator-5554 with apk: C:\Users\Sayali.Sheode\AppData\Local\Xamarin\Mono for Android\Archives\2019-08-16\FirstXamarinApp.Android 8-16-19 9.17 AM.apkarchive\com.companyname.firstxamarinapp.apk 
Skipping local screenshots. Can be enabled with EnableScreenshots() when configuring app. 
Signing apk with Xamarin keystore. 
Skipping installation: Already installed. 
Waiting for element matching Marked("Click Me!"). 
Waiting for element matching Marked("Click Me!").  Using element matching Marked("Click Me!"). Tapping coordinates [ 540, 1731 ]. 
Query for Marked("Click Me!") gave 0 results.

Также это трассировка стека:

Message: 
        System.InvalidOperationException : Sequence contains no elements
      Stack Trace: 
        at Enumerable.First[TSource](IEnumerable`1 source)
        at WelcomePage.OnClick() in WelcomePage.cs line: 43
        at Tests.VerifyButtonClick() in Tests.cs line: 36

person ssheode    schedule 21.08.2019    source источник


Ответы (1)


После дальнейшей отладки и исследования я обнаружил, что ClickButton = x => x.Marked("Click Me!"); должен быть идентифицирован по идентификатору, а не по тексту на кнопке, потому что текст на кнопке изменяется при нажатии. Изменил идентификатор на следующий, и тест пройден:

ClickButton = x => x.Id("NoResourceEntry-3");
person ssheode    schedule 21.08.2019