- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 Motion Event 类和 instrumentation 类在屏幕上执行长按。
此类似乎适用于 4.2 及以下设备,但当我尝试在 4.3 设备上实现相同功能时,我遇到了以下异常
谁能帮我解决这个问题
提前致谢
我用来执行长按事件的方法是
private void longClickOnScreen(float x, float y) {
try {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();
MotionEvent event = MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_DOWN, x, y, 0);
MotionEvent event2 = MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_UP, x, y, 0);
inst.sendPointerSync(event);
Thread.sleep(750);
inst.sendPointerSync(event2);
} catch (NullPointerException e) {
// TODO: handle exception
e.printStackTrace();
}
}
java.lang.RuntimeException: This method can not be called from the main application thread
at android.app.Instrumentation.validateNotAppThread(Instrumentation.java:1651)
at android.app.Instrumentation.sendPointerSync(Instrumentation.java:933)
at com.kpt.adaptxt.uitest.event.EventHandler.longClickOnScreen(EventHandler.java:84)
at com.kpt.adaptxt.uitest.event.EventHandler.longClick(EventHandler.java:149)
at com.kpt.adaptxt.uitest.testsuite.UiautomationTestsuite.testLongpressEvent(UiautomationTes
tsuite.java:24)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java
:160)
at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:9
6)
at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:91)
at com.android.commands.uiautomator.Launcher.main(Launcher.java:83)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
at dalvik.system.NativeStart.main(Native Method)
最佳答案
After lots of research I solved the above problem by using following piece of code
private void longClickOnScreen(int x, int y) {
try {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();
final MotionEvent eventDown = MotionEvent.obtain(downTime,
eventTime, MotionEvent.ACTION_DOWN, x, y, 0);
eventDown.setSource(InputDevice.SOURCE_TOUCHSCREEN);
final MotionEvent eventUp = MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_UP, x, y, 0);
eventUp.setSource(InputDevice.SOURCE_TOUCHSCREEN);
Thread task = new Thread(new Runnable() {
private Handler handler;
@Override
public void run() {
// TODO Auto-generated method stub
Looper.prepare();
handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
inst.sendPointerSync(eventDown);
try {
Thread.sleep(750);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
inst.sendPointerSync(eventUp);
}
});
Looper.loop();
}
});
task.start();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
关于android - 在 4.3 android 版本的 uiautomator 中使用仪器类长按问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156959/
我有一个正在购买产品的应用程序。在 uiautomation 测试期间,我想测试整个 View ,但不希望它实际购买。 如果设备在 ui-automator 模式下运行,如何检查测试应用程序? 最佳答
import com.android.uiautomator.core.UiObject; import com.android.uiautomator.core.UiObjectNotFoundEx
我正在尝试使用 UIAutomator 滚动。场景是我进入选项卡中的“设置”菜单并单击“应用程序选项”,这会为我提供选项卡中所有应用程序的列表。现在我想滚动应用程序列表,这是我面临问题的地方。它滚动设
我目前使用的是 Nexus 5 设备。 我正在尝试点击屏幕上的“删除帐户”。我使用了 UIAutomatorViewer 工具并找到了屏幕上所有元素的节点详细信息。有三个元素对应于我正在查看的“添加帐
我想在 Windows 上仅使用命令行工具编译和运行 Android UI 黑盒测试。我编写了一个 UiAutomatorTestCase,构建它,并将其上传到 /data/local/tmp/。我确
在发布到 Android 应用程序商店的应用程序的实现中,有什么会阻止我使用 UIAutomator 吗? 我的目标是通过我的应用自动执行与第三方应用的一些简单用户交互。这需要对第三方应用程序进行自省
我试图找到一个很好的资源来开始使用 UIAutomation。我需要在 WPF 应用程序中模拟鼠标输入。有什么好的例子吗?我找不到,还有 MSDN documentation似乎太广泛了。 最佳答案
我的选择器 View 只有一个组件,并且该组件中有 5 个值。 我可以获得轮子的数量以及组件中的值,如下 var picker = window.pickers(); UIALogger.logMes
我是 iPhone Automation 和 iOS4 引入的 UIAutomation 框架的新手。最近,我使用 UIAutomation 通过仪器在 iPhone 模拟器上自动测试应用程序,但它给
当我在 Instruments 中运行 UIAutomation 脚本时,一切正常,但是当我从命令行运行完全相同的脚本时,出现此错误:无法对无效元素执行操作:来自 target.frontMostAp
当我在命令提示符下运行以下命令时,出现以下错误。 命令:C:\Users\ob>uiautomatorviewer 错误: -Djava.ext.dirs=..\lib\x86_64;..\lib i
我正在编写一个脚本来测试 iPhone 上的应用程序。我想放大图像。 我尝试执行inchOpenFromToForDuration({x:80, y:150}, {x:30, y:150}, 2),但
我有一个iPad应用程序,正在为其编写UIAutomation脚本。有一个UIButton,在点击时显示UIPopoverController。我的脚本如何选择(点击)该弹出框内的项目? 编辑: UI
由于我正在使用 Instruments 的 UIAutomation 工具,我需要以下信息: 1) 是否有任何动态提供数据的程序。例如,如果我需要使用此脚本来测试 Textfield 的不同数据,如何
我使用 UIAutomation 测试和制作脚本,我需要在我的 tableView 中循环选择 cell 并等待它下载到另一个. var target = UIATarget.localTarget(
我正在开发一个将捕获屏幕上的文本的 Windows 7 C++ 程序。 Microsoft 的 UIAutomation 框架似乎是实现它的最佳方式。除了一件事,我已经让它运行得很好——当我使用框架的
我正在通过 uiautomator 执行单元测试。现在我面临无法管理测试方法顺序的问题。请帮助我如何管理测试方法的运行顺序。它不是按方法顺序工作的。提前致谢。 @Test public void fi
我的 UI automator 测试在 (Lollipop) 模拟器上运行绿色,但在 Sony Xperia Z1 (Lollipop 5.1.1) 上出现此错误。有任何想法吗 ?解决方法? 11-2
我是 uiAutomator 的新手。我尝试将参数传递给方法,它运行但忽略传递给它的任何内容。只是想知道我们是否可以将任何参数传递给 uiAutomator 中的测试类或测试方法? 最佳答案 我知道这
我已经使用 UI Automator 自动转到 android 手机中的设置,我使用“getUiDevice().pressMenu();”单击菜单及其带有 3 个子菜单项的打开菜单,我想使用名称或索
我是一名优秀的程序员,十分优秀!