Android Firebase测试实验室-如何在机器人测试中执行Facebook登录?

Android Firebase测试实验室-如何在机器人测试中执行Facebook登录?,android,firebase,facebook-android-sdk,firebase-test-lab,Android,Firebase,Facebook Android Sdk,Firebase Test Lab,我正在Firebase测试实验室用Robo test测试我的应用程序,但如果没有Facebook登录,我的应用程序无法启动,Firebase emulator在Facebook Web登录时被卡住 我试图记录一个“浓缩咖啡测试”,并将我的FB测试登录凭据放入其中,但由于它没有在Facebook登录WebView的文本视图中记录字符,因此无法工作 有什么方法可以让我将我的Facebook测试帐户凭据放在Firebase模拟器上继续测试吗 Firebase建立了一个很好的测试环境,但他们不能将您的F

我正在Firebase测试实验室用Robo test测试我的应用程序,但如果没有Facebook登录,我的应用程序无法启动,Firebase emulator在Facebook Web登录时被卡住

我试图记录一个“浓缩咖啡测试”,并将我的FB测试登录凭据放入其中,但由于它没有在Facebook登录WebView的文本视图中记录字符,因此无法工作

有什么方法可以让我将我的Facebook测试帐户凭据放在Firebase模拟器上继续测试吗


Firebase建立了一个很好的测试环境,但他们不能将您的FB凭据用于测试,这对我来说似乎很奇怪。(顺便说一句,我无法删除Facebook登录,因为该应用程序基于FB信息)

可能最好的方法是学习如何使用UI Automator进入WebView,以操纵其元素,这些元素由Android的可访问性API公开。这并不简单,但绝对可行


截至2020年6月9日,Firebase测试实验室机器人脚本仍不支持facebook登录。据说,

注意:Robo脚本录制不会捕获您在脚本之外的操作 测试应用程序。例如,通过Facebook、Twitter和其他网站登录 社交应用不会被录制

因此,您不能通过robo脚本指示robo在sdk登录页面中输入您的facebook测试凭据

恶作剧 然而,我想出了一个绕过facebook登录的恶作剧。我在alpha build中引入了一个隐藏的功能(确保它不会被发布到生产环境中),如下所述:

  • 当登录屏幕中的版本文本被按下10次时,我显示了一个带有EditText的对话框,手动输入facebook访问令牌
  • 从facebook开发者控制台,我创建了一个并获得了它的访问令牌
  • 我从android studio中的firebase assistant插件录制了这段视频
  • 在对话框中输入访问令牌后,我执行了从facebook sdk获取访问令牌时调用的函数
  • 我构建了一个新的应用程序包,并在robo测试中与录制的robo脚本一起提交
就这样。facebook登录现在被绕过。这是示例代码

    var fbTokenInputDialogVisibiltyCountDown = 0
    binding.textViewVersion.setOnClickListener {
        if (fbTokenInputDialogVisibiltyCountDown < 10) {
            fbTokenInputDialogVisibiltyCountDown = fbTokenInputDialogVisibiltyCountDown.inc()
            return@setOnClickListener
        }
        val inputFbTokenBinding =
            ViewInputDialogBinding.inflate(LayoutInflater.from(requireContext()))
        AlertDialog.Builder(requireContext())
            .setView(inputFbTokenBinding.root)
            .setNegativeButton("Cancel", null)
            .setPositiveButton("Submit") { _, _ ->
                val fbAccessToken =
                    inputFbTokenBinding.editTextToken.value() // extension function show error for invalid input
                if (fbAccessToken.isNotEmpty()) onGetFacebookAccessToken(fbAccessToken)
            }
            .show()
        fbTokenInputDialogVisibiltyCountDown = 0
    }
var fbTokenInputDialogVisibiltyCountDown=0
binding.textViewVersion.setOnClickListener{
if(fbTokenInputDialogVisibiltyCountDown<10){
fbTokenInputDialogVisibiltyCountDown=fbTokenInputDialogVisibiltyCountDown.inc()
return@setOnClickListener
}
val inputFbTokenBinding=
ViewInputDialogBinding.inflate(LayoutFlater.from(requireContext()))
AlertDialog.Builder(requireContext())
.setView(inputFbTokenBinding.root)
.setNegativeButton(“取消”,null)
.setPositiveButton(“提交”){{},{->
val fbAccessToken=
inputFbTokenBinding.editTextToken.value()//扩展函数显示无效输入的错误
如果(fbAccessToken.isNotEmpty())onGetFacebookAccessToken(fbAccessToken)
}
.show()
fbTokenInputDialogVisibiltyCountDown=0
}

我希望有帮助。如果您有任何问题,请告诉我?

您可能是对的,但对我来说似乎是一条艰难的道路,Firebase应该改进这一点,因为没有其他解决方案。