Как добавить одновременно движущиеся касания в Appium iOS, если их продолжительность больше?

В моем приложении есть UIView. Он получает UITouch-es и имеет довольно сложную логику их обработки. Логика обработки зависит от сенсорного интерфейса UIKit.

Я не знаю, как воспроизвести такой случай ни с TouchAction, ни с MultiAction. Там 2 касания. touch2 начинается позже и длится меньше: введите здесь описание изображения

В моменты t3 и t4 касания двигаются одновременно, затем касание2 заканчивается, но касание1 продолжает двигаться.
Мой текущий неработающий код: 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?

Любая помощь будет принята с благодарностью.


person Olha    schedule 08.10.2019    source источник
comment
Я бы порекомендовал вам попробовать использовать жесты вместо MultiTouch. я могу предоставить вам несколько примеров только на Java. Если вам это интересно - дайте знать. Библиотеки для работы: PointerInput, Sequence. Не знаю о соответствующих библиотеках Python   -  person Vault23    schedule 09.10.2019
comment
@ Vault23 Вы имеете в виду последовательность из import org.openqa.selenium.interactions.Sequence?   -  person Olha    schedule 09.10.2019
comment
@ Vault23 Да, меня также интересуют решения для Java. :) Было бы здорово, если бы вы дали несколько ссылок на библиотеки и примеры кода.   -  person Olha    schedule 09.10.2019
comment
@OlhaPavliuk Я тоже столкнулся с подобной проблемой при написании тестов для своего приложения. Вы смогли это решить?   -  person Vishwas    schedule 13.02.2020
comment
@Vishwas Мне очень жаль, я отложил работу над этим, потому что изменились приоритеты. Хотя мое текущее предположение состоит в том, что этот API реализован в Java Appium Client, а не в Python, если он вообще реализован.   -  person Olha    schedule 13.02.2020
comment
@Vishwas Я говорю о совете из Vault23   -  person Olha    schedule 13.02.2020


Ответы (1)


Хорошо тогда. вот пример использования жестов в 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)); Как видите, вы можете изменить продолжительность жеста, поэкспериментировать с ним, и вы поймете, как это работает. Также здесь есть несколько документов с примерами.

person Vault23    schedule 09.10.2019
comment
Спасибо! Я посмотрю на это. - person Olha; 09.10.2019