Невозможно сделать скриншоты с помощью Xamarin.UITest - PullRequest
0 голосов
/ 25 сентября 2019

Я запускаю тесты Xamarin.UITest на Windows 7, используя эмулятор Andorid и устройство Android.В обоих случаях я не могу сделать снимки экрана.

Я инициализирую такие вещи:

ConfigureApp
    .Android
    .ApkFile(apkPath)
    .EnableLocalScreenshots()
    .StartApp();

И делаю снимок экрана следующим образом:

App.Screenshot("App Started");

Однако при вызове App.Screenshot я получаю следующее исключение:

System.Exception : Error while performing Screenshot("App Started")
  ----> System.Exception : Failed to create C:\Users\USERNAME\.nuget\packages\xamarin.uitest\3.0.3\lib\net45\screenshot-1.png. You may need to set the working directory, which can be done using System.IO.Directory.SetCurrentDirectory().
   at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, String memberName)
   at Xamarin.UITest.Android.AndroidApp.Screenshot(String title)
   at ACME.App.UITest.BaseUITest.BeforeEachTest() in C:\ACME\ACME.Application.UITest\BaseUITest.cs:line 29
   at NUnit.Framework.Internal.TaskAwaitAdapter.GenericAdapter`1.GetResult() in D:\a\1\s\src\NUnitFramework\framework\Internal\TaskAwaitAdapter.cs:line 99
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await(Func`1 invoke) in D:\a\1\s\src\NUnitFramework\framework\Internal\AsyncToSyncAdapter.cs:line 60
   at NUnit.Framework.Internal.Commands.SetUpTearDownItem.RunSetUpOrTearDownMethod(TestExecutionContext context, MethodInfo method) in D:\a\1\s\src\NUnitFramework\framework\Internal\Commands\SetUpTearDownItem.cs:line 111
   at NUnit.Framework.Internal.Commands.SetUpTearDownItem.RunSetUp(TestExecutionContext context) in D:\a\1\s\src\NUnitFramework\framework\Internal\Commands\SetUpTearDownItem.cs:line 68
   at NUnit.Framework.Internal.Commands.SetUpTearDownCommand.<>c__DisplayClass0_0.<.ctor>b__0(TestExecutionContext context) in D:\a\1\s\src\NUnitFramework\framework\Internal\Commands\SetUpTearDownCommand.cs:line 48
   at NUnit.Framework.Internal.Commands.BeforeAndAfterTestCommand.<>c__DisplayClass1_0.<Execute>b__0() in D:\a\1\s\src\NUnitFramework\framework\Internal\Commands\BeforeAndAfterTestCommand.cs:line 58
   at NUnit.Framework.Internal.Commands.BeforeAndAfterTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action) in D:\a\1\s\src\NUnitFramework\framework\Internal\Commands\BeforeAndAfterTestCommand.cs:line 73
--Exception
   at Xamarin.UITest.Android.JavaScreenshotTaker.Screenshot(String title)
   at Xamarin.UITest.Android.AndroidApp.<>c__DisplayClass84_0.<Screenshot>b__0()
   at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, String memberName)

Глядя на сгенерированный файл журнала, я вижу:

Could not take screenshot
java.io.IOException: EOF
    at com.android.ddmlib.AdbHelper.read(AdbHelper.java:874)
    at com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:333)
    at com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source)
    at com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)
    at sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source)
    at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source)

Что я пробовал:

  • Установка другого каталога с помощью Directory.SetCurrentDirectory() - это, похоже, игнорируется, так как я вижу один и тот же путь в Исключении независимо от (C:\Users\USERNAME\.nuget\packages\xamarin.uitest\...)
  • Предоставление группе Everyone доступа кпуть C:\Users\USERNAME\.nuget\packages\xamarin.uitest\3.0.3\lib\net45\ - без эффекта
  • Гарантировать, что тесты могут записывать файлы по указанному выше пути - они могут, так что это не должно быть проблемой с разрешениями
  • Обновление до последней сборки devXamarin.UITest, 3.0.4-dev1 - тот же результат
...