我正在尝试使用appium 在移动设备屏幕上执行圈子手势操作。我尝试使用 swipe()
,press("args").moveTo("args")
,并尝试使用javascript executor方法。但是无法在iOS的移动屏幕上执行圆圈手势操作。
在从第一点到最后一点执行此操作时,需要执行此圆圈手势操作而不会失去中间的触摸。
是否有像 AutoIT or Sikuli
这样的工具在移动设备上执行上述手势操作,并且可以在Mac中使用java在appium脚本中执行。
答案 0 :(得分:1)
对于那些寻求快速解决方案的人来说,这是基于此主题中其他评论的实现:
public void SwipeArc(double centerX, double centerY, double radius, double startDegree, double degrees, int steps)
{
//interpolate along the circumference of the circle
double angle = degrees / steps;
double prevX = centerX + radius * Math.Cos(startDegree * Math.PI / 180F); ;
double prevY = centerY + radius * Math.Sin(startDegree * Math.PI / 180F);
TouchAction circleTouch = new TouchAction(_Driver); //Your appium driver object here
circleTouch.Press(prevX, prevY);
for(int i = 1; i <= steps; ++i)
{
double newX = centerX + radius * Math.Cos((startDegree + angle * i) * Math.PI / 180F);
double newY = centerY + radius * Math.Sin((startDegree + angle * i) * Math.PI / 180F);
double difX = newX - prevX;
double difY = newY - prevY;
circleTouch.MoveTo(difX, difY);
prevX = newX;
prevY = newY;
}
circleTouch.Release();
circleTouch.Perform();
}
此解决方案假设Appium服务器期望每个步骤的相对坐标,我不确定所有Appium服务器版本是否都是这种情况。
答案 1 :(得分:0)
使用touch actions! 我尝试在iOS和Android真实设备上,它工作正常。但是你可能需要玩一下才能获得正确的坐标和移动参数。