如果持续时间较长,如何在Appium iOS中同时添加移动触摸?

时间:2019-10-08 21:00:52

标签: appium appium-ios xcuitest python-appium

我的应用中有一个UIView。它接收UITouch-es,并且处理逻辑非常复杂。处理逻辑取决于UIKit触摸界面。

我既不知道如何使用TouchAction也不使用MultiAction来重现这种情况。 有2次接触。 touch2 稍后开始,持续时间较短: enter image description here

t3t4触摸同时移动的时刻, touch2 结束,但 touch1 仍然移动。
我当前无法正常工作的代码:https://gist.github.com/gatamar/c7182292a1b54379cc26f3e38c823199

在UIKit中,触摸事件如下所示:

touchesBegan: [touch1_t1]
touchesBegan: [touch2_t2]
touchesMoved: [touch1_t3, touch2_t3]
touchesMoved: [touch1_t4, touch2_t4]
touchesEnded: [touch2_t4]
touchesMoved: [touch1_t5]
touchesEnded: [touch1_t5]

使用Appium是否可以实现这一目标?

MultiAction可以执行两次非同时触摸吗?

Python Appium Client中是否存在更多低级API,例如硒,XCUITest吗?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

然后,Okey。这是在Java中使用手势的示例。

PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
Dimension size = driver.manage().window().getSize();
//get your screen size
Point source = new Point(size.getWidth(), size.getHeight());
//this is resolution of your screen 
Sequence pinch = new Sequence(finger, 0);
pinch.addAction(finger.createPointerMove(Duration.ofMillis(0),
                PointerInput.Origin.viewport(), source.x / 2, source.y / 2));
pinch.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
pinch.addAction(new Pause(finger, Duration.ofMillis(100)));
pinch.addAction(finger.createPointerMove(Duration.ofMillis(600),
                    PointerInput.Origin.viewport(), source.x / 3, source.y / 3));

,然后您需要perform通过调用以下顺序 driver.perform(Arrays.asList(pinchAndZoom1)); 如您所见,您可以修改手势的持续时间,在其周围播放,您将了解其工作原理。另外here是一些带有示例的文档。