Appium [ iOS Native app ] - Как прокрутить до определенного элемента / объекта с помощью Java?

Я хочу прокрутить до определенного элемента, который в настоящее время не виден на экране, но где-то внизу страницы, для чего мне нужно прокрутить вниз. Так dr.scrollTo() не работает и я пытался jsExecutor.executeScript("mobile: scroll", scrollObject) который тоже не работает. Так есть идеи для этого?

Если возможно, я хочу, чтобы он был универсальным, чтобы он мог искать как вверх, так и вниз, где положение объекта не определено.

2 ответа

Решение

Решение - это обходной путь. Для этого нет точной функции. Прежде всего, давайте соберем требования - Страница прокрутки (с диапазоном от [[текущее местоположение страницы, Конец страницы]) до тех пор, пока данный элемент не станет видимым.

Для прокрутки мы можем использовать

driver.swipe(startx, starty, startx, endy, 1000);

Для нахождения элемента видимости мы можем использовать код как

 try {
            dr.findElement(By.xpath(xpath); // find element with whatever Selector, I am using xpath
            if (dr.findElementsByXPath(xpath).size()>0 && dr.findElement(By.xpath(xpath)).isDisplayed()){
                System.out.println("Element found by xpath : " + xpath);
                return true;
            } else
                return false;
        } catch (NoSuchElementException e1) {
            System.out.println("Object not found");
            return false;
        } catch (Exception e2) {
            System.out.println("Unhandled Exception found");
            e2.printStackTrace();
            throw e2;
        }

Теперь нужно поставить условие, что прокрутка должна прекратиться, если последний элемент виден. Для этого мы можем изменить xpath текущего элемента и проверить видимость элемента, найденного этим xpath, например:

String xpath_last = elementxpath.concat("/../*[last()]");  // if we are scrolling downwards then [last()]. But if we are scrolling up then make it [1]

Это завершает ваше состояние. Я думаю, что это должно сделать!

Оригинальное решение для Appium: https://www.youtube.com/watch?v=Z228YKNBrgM

В качестве обходного пути вы можете прокручивать / проводить пальцем до тех пор, пока элемент не отобразится / не будет включен / не активен для iOS или не существует для Android

Другие вопросы по тегам