返回顶部
首页 > 资讯 > 移动开发 >Android自动化测试中实现长按并拖动
  • 239
分享到

Android自动化测试中实现长按并拖动

测试Android 2022-06-06 12:06:27 239人浏览 泡泡鱼
摘要

  Android应用自动化过程中,会遇见需要长按并拖动的场景,例如类似UC浏览器中,长按某个导航中的图标,使其处于可移动状态,然后再将其移动到另一个地方,与其它导航图标换

  Android应用自动化过程中,会遇见需要长按并拖动的场景,例如类似UC浏览器中,长按某个导航中的图标,使其处于可移动状态,然后再将其移动到另一个地方,与其它导航图标换个位置,在robotium中有个drag(float fromX, float toX, float fromY, float toY,int stepCount)方法,但由于drag没有长按这个步骤,因此不能使应用处于可移动的状态,是没法完成这样的常见而简单的操作的。

  drag方法源码实现如下:

 public void drag(float fromX, float toX, float fromY, float toY,    int stepCount) {   long downTime = SystemClock.uptimeMillis();   long eventTime = SystemClock.uptimeMillis();   float y = fromY;   float x = fromX;   float yStep = (toY - fromY) / stepCount;   float xStep = (toX - fromX) / stepCount;   MotionEvent event = MotionEvent.obtain(downTime, eventTime,MotionEvent.ACTION_DOWN, fromX, fromY, 0);   try {    inst.sendPointerSync(event);   } catch (SecurityException ignored) {}   for (int i = 0; i < stepCount; ++i) {    y += yStep;    x += xStep;    eventTime = SystemClock.uptimeMillis();    event = MotionEvent.obtain(downTime, eventTime,MotionEvent.ACTION_MOVE, x, y, 0);    try {     inst.sendPointerSync(event);    } catch (SecurityException ignored) {}   }   eventTime = SystemClock.uptimeMillis();   event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP,toX, toY, 0);   try {    inst.sendPointerSync(event);   } catch (SecurityException ignored) {}  }

  可以看出其实是通过MotionEvent的ACTION_DOWN模拟屏幕按下操作,ACTION_MOVE模拟手势在屏幕上滑动,ACTION_UP模拟手势离开屏幕,从而完成整个拖动过程,而且其实robotium中的各种点击类方法也都是通过模拟不同的手势完成的。


--结束END--

本文标题: Android自动化测试中实现长按并拖动

本文链接: https://lsjlt.com/news/28621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作