Проблема прокрутки Appium на экране с горизонтальной прокруткой - PullRequest
0 голосов
/ 16 января 2020

Это двухэтапная проблема.

Первая проблема - это прокрутка приложения через Appium. Раньше у нас не было проблем с прокруткой на главном экране нашего приложения, но теперь на главном экране есть элементы с горизонтальной прокруткой, функции вертикальной прокрутки, которые мы встроили в наши методы утверждений, теперь не работают (при поиске выбранного элемента для утверждения они просто не прокручивать вообще). Ниже приведен пример методов, которые мы использовали для поиска элемента:

public WebElement findElementIdByScrolling(String textContains){
    wait(Constants.WaitTime);
    return driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(new UiSelector().resourceId(\"" + textContains + "\"));"));

Я искал решение, которое работает, но пока что не повезло.

Вторая проблема зависит от решаемой первой. Не столько проблема, сколько вопрос. Как вы делаете горизонтальную прокрутку на Appium? Вся прокрутка на основе элементов, которую я видел, включает в себя прокрутку вниз экрана вместо прокрутки ПРОСТО элемента по вертикали или горизонтали.

1 Ответ

0 голосов
/ 16 января 2020

Вы можете попробовать приведенный ниже код в существующем коде scrollable(true).instance(0))

Добавить нужную возможность UiAutomator2, если вы используете appium в качестве механизма автоматизации.

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");

Теперь используйте функции ниже, если вы иметь идентификатор элемента и индекс как 0, поскольку на странице есть один элемент.

public void scrollByID(String Id, int index) {

        try {

             driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().resourceId(\""+Id+"\").instance("+index+"));")); 

        } catch (Exception e) {
           e.printStackTrace();
        }
    }

Прокрутка с использованием текста

public void scrollByText(String menuText) {

        try {

             driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textMatches(\"" + menuText + "\").instance(0));")); 
        } catch (Exception e) {
           e.printStackTrace();
        }
    }

Прокрутка с размером экрана :

public void scrollToBottom() {

      int  x = driver.manage().window().getSize().width / 2;
      int start_y = (int) (driver.manage().window().getSize().height * 0.2);
      int end_y = (int) (driver.manage().window().getSize().height * 0.8);
        TouchAction dragNDrop = new TouchAction(driver)
                        .press(PointOption.point(x,start_y)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(500)))
                        .moveTo(PointOption.point(x, end_y))
                        .release();
        dragNDrop.perform();
    }
...