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