解锁模拟器或设备以进行 Android 测试

2024-03-02

我正在编写 Android 功能测试。我需要设备处于唤醒状态并且应用程序处于可视化状态才能正常工作。我已经咨询过安卓开发者 http://developer.android.com/tools/testing/activity_testing.html#UnlockDevice为了那个原因。然而,所提出的解决方案存在几个问题:

  • 所提出的方法现在有几种已弃用的方法。 Android API 现在建议我在窗口上使用标志:

此类在 API 级别 13 中已弃用。使用 FLAG_DISMISS_KEYGUARD 和/或 FLAG_SHOW_WHEN_LOCKED 代替;这使您可以无缝地 当您的应用程序移入和移出时隐藏键盘护罩 前台并且不需要任何特殊权限 要求。 newKeyguardLock(String) 返回的句柄允许您 禁用/重新启用键盘保护。

我尝试了这个建议,但是,与已弃用的解决方案相反,标志 one jsut 对我不起作用 - 它不会解锁设备。我还找到了确认标志解决方案不稳定的消息来源(例如,关于这个答案 https://stackoverflow.com/a/4982787/1108032).

  • 第二个问题是我需要向被测应用程序添加权限。我发现这是非常错误的方法(修改被测代码以便能够测试它)。我找到了几个建议我使用的地方src/debug/AndroidManifest.xml为此(这个one https://stackoverflow.com/q/19870771/1108032 and this one https://groups.google.com/forum/#!topic/adt-dev/vudxFtSPsPk例如)。然而,它只是没有按照规定发生 - 调试 Mainfest 不会包含在设备上部署的内容中。与我的构建和部署方式有关吗?我使用 Eclipse 进行开发 (ADT)。仅当我使用像 ant 这样的构建工具时,这个清单注入才有效吗?

总而言之 - 有人可以建议一个稳定的解决方案,用于在执行测试时解锁和保持设备唤醒吗?

EDIT

我现在发现Robotium https://code.google.com/p/robotium/还包括unlockScreen https://github.com/RobotiumTech/robotium/blob/master/robotium-solo/src/main/java/com/robotium/solo/Solo.java#L2350最新版本的框架中的方法。它完全使用上面建议的窗口标志,并且在我的设备上也不起作用。


实例UiDevice http://developer.android.com/reference/android/support/test/uiautomator/UiDevice.html has wakeUp() http://developer.android.com/reference/android/support/test/uiautomator/UiDevice.html#wakeUp() method

此方法模拟在屏幕关闭时按下电源按钮,否则如果屏幕已打开则不执行任何操作。如果屏幕关闭且刚刚打开,此方法将插入 500 毫秒的延迟,以便让设备有时间唤醒并接受输入。

然而,我不知道解锁屏幕是否存在类似的方法,因此我当前的解决方案是删除锁定图案(设置为NONE在测试设备上)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解锁模拟器或设备以进行 Android 测试 的相关文章

随机推荐

  • 如何隐藏exe或dll中的字符串?

    我发现可以从二进制文件中提取硬编码字符串 例如属性视图流程浏览器 http technet microsoft com en us sysinternals bb896653 aspx显示所有超过 3 个字符的字符串 这是我为了简单测试而编
  • 有没有办法编译node.js源文件? [复制]

    这个问题在这里已经有答案了 有没有办法编译一个node js http nodejs org 应用 我可能很晚了 但你可以使用 nexe 模块在一个可执行文件中编译nodejs 你的脚本 https github com crcn nexe
  • MediaMetadataRetriever.getFrameAtTime() 仅返回第一帧

    我使用 MetadataRetriever 从视频中提取了帧 并将所有图像存储在ArrayList
  • Vue-Router:类型错误:this._router.init 不是函数

    我已经安装了 vue router 在 Laravel 项目中 然后尝试使用它 import VueRouter from vue router Vue use VueRouter 然后我得到这个 Vue warn Error in bef
  • Android位置请求PRIORITY_HIGH_ACCURACY没有效果

    我的 Android 应用程序需要高精度位置跟踪 应用程序启动时 它会以编程方式读取位置设置 并在以下情况下显示一个屏幕 高准确率未选择 我改编了Google官方的例子 https developers google com android
  • org.jboss.as.server.deployment.DeploymentUnitProcessingException:在 ws 端点部署中检测到 Apache CXF 库

    我正在使用 Eclipse Juno 和 WildFly 8 2 并尝试使用 ws security 部署肥皂 Web 服务 这是我的参考网站 https docs jboss org author display JBWS WS Secu
  • 生成随机 IPv6 地址

    在Python中 如果我想生成一个IP v6地址形式的随机字符串 该怎么办 例如 ff80 220 16ff fec9 1 fe80 232 50ff fec0 5 fe20 150 560f fec4 3 等 有人可以给我一些帮助吗 一线
  • Imgur API 上传

    于是就有了这行代码 String data URLEncoder encode image UTF 8 URLEncoder encode Base64 encodeBase64String baos toByteArray toStrin
  • Google Compute Engine 分配静态 IP 定价?

    当我们为 Compute Engine 实例分配静态 IP 时 我们是否需要为该实例支付额外费用 我已阅读他们的文档 但没有找到有关该功能定价的任何信息 UPDATE 自 2020 年 1 月 1 日起 静态和临时外部 IP 在使用时按 0
  • 将数组拆分为大小相等的窗口[重复]

    这个问题在这里已经有答案了 我正在尝试拆分numpy array长度为 40 的较小的 大小相等的numpy arrays 其中较小数组的数量由用户给出 较小数组之间允许有一些重叠 因为在给定较小数组某种形式的重叠的情况下 可能会出现全长只
  • 在 SOAP 消息中使用 XSLT 替换命名空间 uri

    我有一条输入肥皂消息 试图用不同的字符串替换命名空间 URI 的一部分 我可以用不同的 URI 替换整个 URI 但无法修改现有的 URI 我需要查找 OLDSTRING 并替换为 NEWSTRING 字符串 VARIABLESTRING
  • 在 Solr 中增强布尔字段

    是否可以提高 Solr 中的布尔字段以便获得更高的分数 我们有一个索引 看起来有点像这样 文档ID title 描述 keywords 已审阅 搜索时 已审阅的文档 即 is reviewed true 的权重应高于未审阅的文档 而不是完全
  • VoiceXML 录制整个通话,包括菜单选项

    我正在尝试使用 VoiceXML 在 Nexmo 上 录制整个电话 我可以单独进行录音或给出菜单提示并转接呼叫 但我不知道如何同时执行这两项操作 我想从头到尾记录通话 包括转接的通话部分 我想象 VoiceXML 看起来像这样 但这不是有效
  • 用多态函数覆盖模板化函数

    如果我有 template
  • 为什么 addOnScrollListener 不起作用?

    我尝试在滚动到 recyclerView 底部时实现加载更多 当我的 XML 只有 recyclerView 时它可以工作 但当我将它放入滚动视图和 setNestedScrollingEnabled false 时它不起作用 Requir
  • 限制显示的表格行数

    如果我有一个包含很多行的简单 HTML 表格 我怎样才能只显示x行数 HTML table tr th Process th th User th th CPU th tr tr td system welcome exe td td dv
  • HTML5输入颜色默认颜色

    The input type color 默认颜色为黑色 000000 即使我给它一个空值
  • 如何将 Azure 逻辑应用中 For_Each 循环的输出合并到单个平面数组?

    我有一个For Each在调用另一个嵌套逻辑应用程序的 Azure 逻辑应用程序中循环 嵌套逻辑应用的每次迭代的结果是一个包含字符串数组的 JSON 对象 如下所示 Results string a string b 因此 父逻辑应用程序中
  • Java 如何反转 BigInteger?

    我需要反转BigInteger 假设我有BigInteger x 我需要计算x modPow new BigInteger 1 p 我收到以下错误 java lang ArithmeticException BigInteger not i
  • 解锁模拟器或设备以进行 Android 测试

    我正在编写 Android 功能测试 我需要设备处于唤醒状态并且应用程序处于可视化状态才能正常工作 我已经咨询过安卓开发者 http developer android com tools testing activity testing