【问题标题】:Are UiAutomator and AccessibilityServices not compatible?UiAutomator 和 AccessibilityServices 不兼容吗?
【发布时间】:2015-03-13 14:50:55
【问题描述】:

我有一个 AccessibilityService (AS) 正在运行,以编程方式获取有关当前屏幕上显示内容的信息。

现在我想设置一些 UiAutomator 测试用例。但是,如果我让 AS 运行 UiAutomator,则会出现以下错误:

INSTRUMENTATION_RESULT: shortMsg=java.lang.SecurityException

INSTRUMENTATION_RESULT: longMsg=Permission Denial: getIntentSender() from pid=9700, uid=2000, (need uid=1000) is not allowed to send as package android

我搜索了网络,发现很多人都遇到过这个问题,但没有解决方案。

那么这是缺乏兼容性问题还是有办法解决它(或至少是一种变通方法)?

注意:如果您对如何在没有 AS 的情况下阅读/访问屏幕内容有其他想法,我会全神贯注(在这种情况下,更多的眼睛......)但我已经寻找了很多其他解决方案和这是我唯一得到的。

提前致谢。

如果您需要更多信息,请告诉我。

【问题讨论】:

  • Funny....当我在 Nexus 5 设备上尝试拍摄屏幕截图时,我只会收到此错误
  • 嗯,我用的就是这个型号……不过奇怪的是设备有问题……
  • 有人想出用 uiautomator 测试无障碍服务的方法吗?

标签: android testing compatibility android-uiautomator accessibilityservice


【解决方案1】:

我在这方面取得了一些成功:

    val flags = UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
    Configurator.getInstance().uiAutomationFlags = flags

    mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())

这里有更多关于配置器的详细信息:

https://developer.android.com/reference/androidx/test/uiautomator/Configurator.html

以下 GitHub 问题帮助我找到了这个:

https://github.com/appium/appium/issues/4910

【讨论】:

    【解决方案2】:

    dazza500的解决方案适用于Kotlin

    就我的情况而言,我在用 Java 编写时在这里修改了我的:

     int flags = UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES;
     Configurator.getInstance().setUiAutomationFlags(flags);
    
     mDevice = UiDevice.getInstance(getInstrumentation());
    

    【讨论】:

    • 如果你在上面写下改变的代码会更好。
    【解决方案3】:

    这是一个老问题,但我想我会回答自己说它们确实不兼容。

    【讨论】:

    • 我很难用它。所以还没有出路可以测试?
    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 2020-08-05
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多