如何使用appium for iOS在移动设备屏幕上执行圆圈手势操作

时间:2015-08-24 04:15:55

标签: android ios selenium jquery-mobile appium

我正在尝试使用appium 在移动设备屏幕上执行圈子手势操作。我尝试使用 swipe()press("args").moveTo("args") ,并尝试使用javascript executor方法。但是无法在iOS的移动屏幕上执行圆圈手势操作。

在从第一点到最后一点执行此操作时,需要执行此圆圈手势操作而不会失去中间的触摸。

是否有像 AutoIT or Sikuli 这样的工具在移动设备上执行上述手势操作,并且可以在Mac中使用java在appium脚本中执行。

2 个答案:

答案 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真实设备上,它工作正常。但是你可能需要玩一下才能获得正确的坐标和移动参数。