如何在 Xamarin.Forms.UITesting 中触发/调试后门功能?

Posted

技术标签:

【中文标题】如何在 Xamarin.Forms.UITesting 中触发/调试后门功能?【英文标题】:How to trigger / debug backdoor functionality in Xamarin.Forms.UITesting? 【发布时间】:2019-09-19 11:02:26 【问题描述】:

我正在尝试将 BackdoorMethod 添加到 Xamarin.Forms 应用程序以绕过登录(IDP - 在 chrome 浏览器中打开)步骤。我感觉该方法没有被触发,但不确定,我不知道如何确定它。

我在这里阅读了文档:https://docs.microsoft.com/en-us/appcenter/test-cloud/uitest/working-with-backdoors

查看这个帖子:https://forums.xamarin.com/discussion/85821/xamarin-uitest-backdoor-on-droid-with-splash-screen-how-do-i-access-my-mainactivity

检查了这个例子:https://github.com/brminnick/UITestSampleApp/tree/master/Src

MainActivity.cs 文件中,我定义了 BackdoorMethod:

[Preserve, Export(nameof(BypassLoginScreen))]   
public string BypassLoginScreen()

  // some additional code here. the code is working, when I called it 
  // directly from OnCreate it was executed without any error
  return "called";

我试图从测试用例中调用它:

public constructorMethod(Platform platform) 

  this.platform = platform;
  app = AppInitializer.StartApp(platform);
  var result = app.Invoke("BypassLoginScreen"); // result == "<VOID>"

我没有收到任何错误消息,该方法根本没有被调用,或者没有返回任何内容。 (或者我不知道那里发生了什么,因为断点在应用程序从设备启动时也不起作用)

【问题讨论】:

【参考方案1】:

这应该已经可以工作了。我有类似的代码,它对我有用。 你可以在你的函数中添加

 android.Util.Log.WriteLine(Android.Util.LogPriority.Info, "BypassLoginScreen", $"Some text as info");

并在Device Logs中观察结果,通过BypassLoginScreen过滤,看看是否有任何使用标签BypassLoginScreen创建的日志

【讨论】:

以上是关于如何在 Xamarin.Forms.UITesting 中触发/调试后门功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?