从Xamarin Forms Button获取Android资源名称

4

现在,Play 商店允许您指定凭据供 Pre-launch 报告模拟器使用。为了让模拟器知道添加凭据的文本字段和要点击登录的按钮,它会请求文本字段和按钮的资源名称。

是否有任何 Xamarin Form 属性可以转换为资源名称?我尝试在构建应用程序后查看 /obj/ 和 /bin/ 文件夹,看是否有文件包含此类信息,但是我没有找到任何东西。

我能想到可能映射到资源名称的属性:

StyleId
AutomationId
ClassId
AutomationProperties.Name (in XF 2.3.5)

如果没有映射,您是否知道如何使用自定义渲染器使其工作?
1个回答

2

使用 Pre-launch 报告与 Xamarin.Forms 有两个选项:

1) 通过布局 XML 资源定义一个登录 Activity,其中包括用户名和密码的 Entry 字段。登录按钮是可选的,如果未提供,则机器人将点击屏幕上的所有可用按钮。

你可以将此 Activity 定义为你的主要启动器(或在“启动画面”活动后启动的活动),并独立于 Xamarin.Forms 代码执行登录验证,当然你可以访问 PCL/NStd 库代码。验证成功后,继续进行“MainActivity”,该活动执行正常的 Xamarin.Forms 初始化,或通过自定义渲染器(或最简单的完整 Activity 的依赖服务)呈现此登录 Activity(或 ViewGroup、Fragment 等)。

现在你知道了 Google 需要的资源 ID,因为它们在登录布局 XML 中硬编码了...

2) 将应用程序发布为 Alpha/Beta,并自动登录到测试帐户,或者只显示一个登录屏幕,其中预置了测试帐户用户和 pwd,并将这些条目设置为只读。机器人将点击登录按钮。

选项2是最快和最容易设置的,因为你已经有了一个登录页面,只需要将测试帐户 id/pwd 定义为这两个字段的默认值,然后将这些字段设置为只读即可...


谢谢你的帮助。我本来希望不必重新创建我的登录界面,但我想为了添加该死的资源名称到“Button”和2个“Entry”,创建一个自定义渲染器可能会相当浪费。 - hvaughan3
1
@hvaughan3 使用第二个选项,你只需要改变几行代码(使用条件语句:#if),并将测试应用程序发布为私有的 alpha/beta 版本。 - SushiHangover
预发布报告的部分目的是对每个版本进行回归测试,以便在设备、SDK和您的代码随时间变化时检测问题。为每个应用程序版本创建自定义构建并不理想。 - Edward Brey
没有自定义构建或资源名称供机器人输入凭据,应用程序或后端如何知道用户是机器人还是人类,并在何时使用测试帐户? - Edward Brey
@SushiHangover,听起来你在谈论选项1,其中你有一个带有命名资源的本地Activity,机器人可以使用。我是在评论选项2,其中代码被修改为#if语句以实现测试登录。为每个版本构建修改后的代码是可行的,但它会增加部署流程的复杂性。 - Edward Brey
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接