【发布时间】:2016-03-25 01:28:48
【问题描述】:
我在 Google/StackOverflow 中搜索了很多次以寻求答案。
最初(在 Android 6.0 之前)我的自动化代码运行顺利,但现在一切都被需要权限的对话框阻止了。
我的应用程序需要将数据保存到 SD 卡中,我发现我无法使用 Selendroid 自动化来关闭运行时测试期间由 com.android.packageInstaller 进程创建的 SD 卡权限要求对话框。
我知道我可以手动预先配置我的应用程序的权限,但是每次我用 Jenkins 重新安装我的应用程序,或者启动一个新的 Selendroid 会话来测试我的应用程序时,所有配置都会被清除。
根据我目前的理解,以下是解决此问题的可能方法:
1. 添加“NoReset”标志告诉 Selendroid 不清除当前设置,但我在 selendroid.io 上找不到它
2. 改用 Appium(他们的文档说他们有 Android 的 NoReset 标志),但这需要一些时间才能将我的代码从 Selendroid 移植到 Appium。
而且我只能在移植完成后才能知道它是否有效。
3. 谷歌提供的任何其他方式,但我就是找不到。
如果有遇到类似问题并有一些信息的人可以与我分享,我将非常感谢您的帮助,谢谢。
【问题讨论】:
-
所以现在你的问题是当你尝试将一些数据保存到scard时,一些对话框弹出来并且你想要处理它?如果你按下对话框上的某个按钮,它会起作用吗?对于您的“可能的方式#3”,您到底想自动化什么?
-
我要做的就是在每次对话框出现时都接受它。我曾尝试使用 Selendroid 来接受,但它们都没有奏效。 Selendroid 告诉我它找不到需要 SD 卡权限对话框的元素,可能的原因是 Selendroid 只能操作我的应用程序,但无法关闭由系统创建的对话框。当然,我可以毫无问题地手动关闭它。
-
您可以使用 android uiautomator 轻松按下“接受”按钮或处理对话框。否则您可以使用
adb shell input keyevent导航并按下对话框上的按钮。 -
@Rilwan 谢谢你的信息!我将研究developer.android.com/intl/ja/tools/testing-support-library/… 和 ADB Shell Input 以了解如何克服这个问题,一旦我解决了我的方法(示例代码),我将把它放在这里! :D
-
好~先试试吧!如果您被卡住了,请将其发布为另一个 qn '如何使用 adb shell 命令处理此对话框'。我会给出答案。
标签: android ui-automation android-6.0-marshmallow selendroid