對於那些尋找一個快速解決方案,這裏是基於在此線程的其他意見我的實現:
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服務器版本的情況。
嗨Vvvaib,感謝您的答覆。 **我的問題是,我們是否可以執行完整的圓圈手勢,而不會丟失屏幕上的觸摸直到結束點**。 **'我嘗試了這一點,但得到了屏幕錯誤的座標。並且你知道appium如何考慮座標點嗎?** – Rohith
我認爲你可以在不失去觸摸屏幕的情況下執行整個手勢。唯一的問題是 - 您必須在Touch操作命令中進行很多步驟才能逐個像素逐個移動並執行圓形手勢。我知道這是因爲我爲我的應用程序定製了縮小功能。屏幕左上角的座標爲0,0。如果你下降Y增加,並且如果你向右 - X增加。右下角是 - 設備的寬度,設備的高度。要獲得所有座標來製作一個圓 - 獲取圓周座標。更好地使用數學公式。 – Vaibhav
http://math.stackexchange.com/questions/1310366/how-to-calculate-new-coordinates-on-a-circles-circumference-when-an-angle-is-gi – Vaibhav