Как автоматизировать прокрутку в Chrome с помощью AndroidDriver? - PullRequest
0 голосов
/ 30 ноября 2018

Попытка автоматизировать меню гамбургера в эмуляторе Android на пиксельном устройстве.Я использую Appium и автоматизируюсь с помощью драйвера Android.Я вижу, что scrollTo() устарела, кто-нибудь знает, как это сделать?

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

В последнем клиенте Appium Java 6.1.0 вы можете провести, используя следующий код:

new AndroidTouchAction (driver)
  .press (PointOption.point (startX, startY))
  .waitAction (WaitOptions.waitOptions (Duration.ofMillis (1000)))
  .moveTo (PointOption.point (endX, endY))
  .release ()
  .perform ();

Здесь startX, startY, endX и endY необходимо рассчитать какв соответствии с вашими потребностями.

ИЛИ

Вы даже можете использовать мой фреймворк с открытым исходным кодом Coteafs-Appium v-3.0, чтобы сильно ударить,

SliderActivity slide = new SliderActivity (this.androidDevice);
slide.onElement ("Slider")
  .swipe (SwipeDirection.RIGHT, SwipeStartPosition.LEFT, 75);
0 голосов
/ 19 декабря 2018

Просто используйте эту простую команду для прокрутки в приложении, используя DesiredCapabilities в JAVA.

driver.findElementByAndroidUIAutomator ("new UiScrollable (new UiSelector ()). ScrollIntoView (text (\" YourТекст \ "));");

Надеюсь, это поможет

0 голосов
/ 01 декабря 2018

Итак, быстрый ответ на этот вопрос: нет, нового пути нет.Это, насколько я понимаю, потому что UIAutomator2 не позволяет элементам, которых нет на экране, найти драйвером Appium.Я считаю, что UIAutomator2 необходим для автоматизации устройств на Android версии 7 и выше.

Это означает, что невозможно определить, в каком направлении находится элемент, когда он находится за пределами экрана.Поэтому, если у кого-то есть решение этого вопроса, я буду рад его услышать.

Теперь, в зависимости от того, какое приложение вы автоматизируете, можно подделать считывание элемента, если вы знаете, в каком направлении оно находится.Например, если ваше приложение прокручивает только вверх и вниз (как и многие приложения), то, если вы знаете, находится ли элемент ниже или выше вашей текущей позиции, вы можете провести по нему пальцем.Это можно сделать с помощью цикла while:

while(elementNotFound) {
    if(findElement(byLocator)) {
        elementNotFound = !elementNotFound;
    }
    else {
        // This is where you would swipe in the direction of where the element is
    }

}

Новый способ сканирования - использование класса TouchAction.Например, вы можете сделать:

(new TouchAction<>(driver)).press(PointOption.point(startX, position.startY)
                           .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000)))
                           .moveTo(PointOption.point(endX, endY))
                           .release()
                           .perform();

В качестве альтернативы вы можете использовать устаревший метод swipeTo с типом привода UIAutomator (не UIAutomator2).Опять же, насколько я понимаю, это будет работать только для устройств на более низких версиях Android SDK.

Извините, если это не даст вам ответа, который вы ищете, но, надеюсь, по крайней мере, даст вам способ найти свой элемент.

...