Xamarin.UITest System.Xml.XmlException

Я создаю тест пользовательского интерфейса для своего приложения Xamarin.Forms. Когда я пытаюсь запустить первый тест для проекта iOS, я получаю System.Xml.XmlException (подробно описано ниже). Этот базовый тест должен работать, верно?

Обновление: если я удалю приложение из симулятора, тест будет запущен впервые. После этого я получаю исключение для всех последующих запусков.

Я использую Xamarin Studio (6.1.3 build 19) и пакет Xamarin.UITest (2.0.5)

namespace UITest
{
    [TestFixture (Platform.Android)]
    [TestFixture (Platform.iOS)]
    public class Tests
    {
        IApp app;
        Platform platform;

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

        [SetUp]
        public void BeforeEachTest ()
        {
            app = AppInitializer.StartApp (platform);
        }

        [Test]
        public void AppLaunches ()
        {
            try {
                app.WaitForElement ("Waiting for fake element", "Timeout", new TimeSpan (0, 0, 20));
            } catch (TimeoutException ex) {
                int i = 5;
            }

            app.Screenshot ("Welcome screen.");
            app.Tap ("TestButton");
            app.Screenshot ("New test screen.");
        }
    }

    public class AppInitializer
    {
        public static IApp StartApp (Platform platform)
        {

            if (platform == Platform.Android) {
                return ConfigureApp
                    .Android

                    .StartApp ();
            }

            return ConfigureApp
                .iOS

                .Debug ()
                .EnableLocalScreenshots ()
                .StartApp ();
        }
    }
}

Детали исключения:

SetUp : System.Xml.XmlException : '', hexadecimal value 0x01, is an invalid character. Line 11, position 11.
    Stack trace:
      at Xamarin.UITest.iOS.iOSAppLauncher.LaunchAppLocal (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, System.Boolean clearAppData) [0x0020a] in <e747267e258a4a668973c7ca7e9014a8>:0 
      at Xamarin.UITest.iOS.iOSAppLauncher.LaunchApp (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, Xamarin.UITest.TestCloud.TestCloudiOSAppConfiguration testCloudAppConfiguration, Xamarin.UITest.Shared.Http.HttpClient testCloudWsClient, Xamarin.UITest.Shared.Http.HttpClient xtcServicesClient, System.Boolean testCloudUseDeviceAgent) [0x0007a] in <e747267e258a4a668973c7ca7e9014a8>:0 
      at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration) [0x00302] in <e747267e258a4a668973c7ca7e9014a8>:0 
      at Xamarin.UITest.Configuration.iOSAppConfigurator.StartApp (Xamarin.UITest.Configuration.AppDataMode appDataMode) [0x00017] in <e747267e258a4a668973c7ca7e9014a8>:0 
      at UITest.AppInitializer.StartApp (Xamarin.UITest.Platform platform) [0x0001f] in /Users/samg/projects/myapp-mobile/myapp-mobile-2/UITest/AppInitializer.cs:38 
      at UITest.Tests.BeforeEachTest () [0x00008] in /Users/samg/projects/myapp-mobile/myapp-mobile-2/UITest/Tests.cs:26 
      at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
      at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in /private/tmp/source-mono-4.6.0/bockbuild-mono-4.6.0-branch/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/corlib/System.Reflection/MonoMethod.cs:305 

person xdev    schedule 30.12.2016    source источник
comment
Покажите, что находится в методе, отмеченном тегом [SetUp], поскольку ошибка начинается с того, что, как я полагаю, что-то там идет не так.   -  person Gerald Versluis    schedule 30.12.2016
comment
Добавлен тестовый класс, включающий метод установки.   -  person xdev    schedule 31.12.2016
comment
Когда вы говорите, что получаете исключение для следующих прогонов, вы имеете в виду без каких-либо изменений кода; например просто остановить бег, а затем запустить его снова? Или вы вносите изменения в проект UITest и / или само приложение между его запуском и ошибкой?   -  person user62171    schedule 05.01.2017
comment
Никаких изменений кода. Просто запуск того же кода приложения test + во второй раз вызывает исключение.   -  person xdev    schedule 06.01.2017
comment
Вы по-прежнему видите проблему, если удалите блок try-catch? Если app.WaitForElement не находит результата, он должен сразу не пройти тест с исключением тайм-аута; поэтому я не уверен, что может измениться ваша индивидуальная обработка. (Обратите внимание, все еще возможно, что ваш подход действителен / это ошибка, но я прошу сравнения.)   -  person user62171    schedule 06.01.2017
comment
Я получаю точно такое же поведение: запуск теста пользовательского интерфейса в первый раз работает. Повторный запуск приводит к вышеупомянутому исключению.   -  person Falko    schedule 24.01.2017
comment
Кто-нибудь нашел решение этой проблемы ??   -  person SaiPawan    schedule 06.04.2017


Ответы (1)


Я знаю, что это старый вопрос, но он может помочь другим. У меня возникла та же проблема, описанная выше, и я решил ее, сбросив симулятор iOS.

Один из способов добиться этого - предпринять следующие шаги:

  • Убедитесь, что симулятор iPhone / iPad запущен;
  • Перейдите в верхнее меню и выберите «Симулятор iOS» -> «Сбросить содержимое и настройки ...»
person Maurits van Beusekom    schedule 14.02.2017
comment
Я согласен, иногда симулятор iOS достигает сумасшедшего состояния и демонстрирует поведение, определенное OP. Простой сброс симулятора сбрасывает его в чистое состояние до тех пор, пока он не покажет такое же поведение. Когда наступит это время, мы снова сбросим его! - person jaeyow; 14.11.2017