我正在开发一种QA自动化解决方案,可以在Android上记录/回放QA测试.关键业务要求是在回放录制的测试时不依赖于连接的PC.为此,我试图在没有连接PC的情况下运行仪器测试.(具体来说,是Appium UiAutomator2测试).
我目前的方法是尝试从我的应用程序以编程方式运行测试.如果我通常从连接的PC运行测试,我会使用该命令adb shell am instrument -w
.我尝试从我的应用程序访问ADB Shell并运行am instrument -w
,但这会产生错误,我错过了INTERACT_ACROSS_USERS_FULL权限.
为了解决这个问题,我尝试使用startInstrumentation运行测试.这成功地开始了测试.但是,测试立即崩溃.经过进一步调查,我将崩溃追踪到NPE:测试试图检索InstrumentationRegistry.getInstrumentation.getUiAutomation(0)
,但是返回null.
如何以编程方式运行测试并授予其访问所需的UiAutomation实例的权限?
这就是我开始测试的方式:
public void runTest() {
final String pm = getPackageName().replaceFirst(".test$", "");
final InstrumentationInfo info = getInstrumentationInfo(pm);
if (info != null) {
final ComponentName cn = new ComponentName(info.packageName,
info.name);
Bundle arguments = new Bundle();
arguments.putString("class", "io.testim.appiumwrapper.test.AppiumUiAutomator2Server");
//cn = {io.extension.test/android.support.test.runner.AndroidJUnitRunner}
startInstrumentation(cn, null, arguments);
}
}
Run Code Online (Sandbox Code Playgroud) android android-testing appium android-instrumentation appium-android
我正在写一个AccessibilityService
,我想在可访问性服务可以检索的当前活动的视图上创建视图叠加.AccessibilityNodeInfo
从当前活动中检索所有对象没有问题,但我不知道如何从这些对象中获取视图以创建叠加层.不幸的是,关于无障碍服务的例子很少.也许你们中的一些人已经有过这个主题的经验.我希望你能帮帮我!谢谢!
编辑:一篇论文表明,活动视图内容的叠加是可能的:
借助Android Accessibility Framework [10],显示叠加层能够执行这些任务.使用辅助功能API,它可以访问和检查屏幕上应用程序的GUI布局,而无需修改或修改应用程序代码."*
链接:http://www.onarlioglu.com/publications/fc2015babelcrypt.pdf
第6页和第8页.谢谢!