Я пытаюсь запустить команду для прокрутки экрана на эмуляторе.Я пробовал набор команд действия из класса Action, но они были противоречивы.В конце концов я наткнулся на приведенный ниже код.
Что мне нужно импортировать или включить, чтобы эти действия работали правильно?Мое другое недоразумение заключается в том, что этот код работает при использовании драйвера Espresso, но выдает это сообщение об ошибке при работе под драйвером UiAutomator2.Я попытался импортировать класс Action, но это не решает проблему.Опять же, есть что-то, что нужно импортировать или использовать специально для этих команд в драйвере UiAutomator2?
Этот код работает при использовании драйвера Espresso, но выдает это сообщение об ошибке при работе под драйвером UiAutomator2.Я попытался импортировать класс Action, но это не решает проблему.
WebElement element1 = wait.until(ExpectedConditions.visibilityOfElementLocated(originLocator));
WebElement element2 = wait.until(ExpectedConditions.visibilityOfElementLocated(destinationLocator));
int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);
int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);
int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);
int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);
PointerInput input = new PointerInput(PointerInput.Kind.TOUCH, "input");
Sequence swipeTo = new Sequence(input, 0);
swipeTo.addAction(input.createPointerMove(Duration.ZERO, PointerInput.Origin.viewport(), startX, startY));
swipeTo.addAction(input.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
swipeTo.addAction(input.createPointerMove(Duration.ofMillis(1000), PointerInput.Origin.viewport(), endX, endY));
swipeTo.addAction(input.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
driver.perform(Arrays.asList(swipeTo));
Это должно прокрутить видимую страницу мобильного приложения в эмуляторе, но в настоящее время это вызывает следующую ошибку (org.openqa.selenium.UnsupportedCommandException: actions
) при запуске с драйвером UiAutomator2.
Редактировать: после применения кода из комментария ниже, у меня есть следующий код, который работает с драйвером UiAutomator2 последовательно, но не с драйвером Espresso (он предназначен для неправильного пространства на-экран и, кажется, нажмите элемент вместо касания и удержания).
WebElement element1 = wait.until(ExpectedConditions.visibilityOfElementLocated(originLocator));
WebElement element2 = wait.until(ExpectedConditions.visibilityOfElementLocated(destinationLocator));
int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);
int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);
int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);
int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);
Dimension dim=driver.manage().window().getSize();
int height=(int) dim.getHeight();
int width=(int) dim.getWidth();
int x= width/2;
new TouchAction(driver)
.press(PointOption.point(x,startY))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(2000)))
.moveTo(PointOption.point(x,endY))
.release()
.perform();
Так что у меня есть рабочая версия для каждого драйвера.Кто-нибудь знает, почему они отличаются в зависимости от используемого драйвера?