Appium [собственное приложение для iOS] — как прокрутить до определенного элемента/объекта с помощью Java?

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

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


person harry    schedule 31.03.2016    source источник


Ответы (2)


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

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

person Oleksandr Soldatov    schedule 31.03.2016

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

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

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]

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

person harry    schedule 29.08.2016