Как прокрутить список из скрипта в APPIUM

Привет, я работаю с APPIUM в Android. Что мне нужно сделать, так это прокрутить страницу списка. Я попытался сделать следующее.

    MobileElement element =(MobileElement)driver.findElement(By.className("android.widget.ListView"));
    JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, String> scrollObject = new HashMap<>();
    scrollObject.put("direction", "down");
    scrollObject.put("element", ((RemoteWebElement) element).getId());
    js.executeScript("mobile: scrollTo", scrollObject);

Это работает, но список постоянно прокручивается до тех пор, пока не отобразится последний элемент. Что мне нужно сделать, так это прокрутить страницу списка.


person Abhay Jangde    schedule 13.12.2017    source источник


Ответы (2)


Это сработало для меня.

 List<WebElement> list = driver.findElements(By.xpath("//android.widget.TextView[@resource-id='com.imdb.mobile:id/label']"));

 if (list != null && !list.isEmpty()) {
   WebElement bottomElement = list.get(list.size() - 1);
   WebElement topElement = list.get(0);      
   TouchAction touchAction = newTouchAction(driver).press(bottomElement).moveTo(topElement).release();
   touchAction.perform();
   }
person Abhay Jangde    schedule 21.12.2017

Поскольку это прокручиваемый список, как насчет использования UiScrollable, например.

driver.FindElement(MobileBy.AndroidUIAutomator("new UiScrollable(
    new UiSelector().scrollable(true).instance(0)).scrollIntoView(
    new UiSelector().resourceId(\"" + id + "\").instance(0))"))

Дополнительные параметры здесь

person dmle    schedule 13.12.2017
comment
Привет, dml, спасибо за ответ, это также прокручивает список до последнего элемента. я хочу щелкнуть первый элемент списка, сделать что-то, нажать назад и щелкнуть следующий элемент и так далее до последнего элемента. Пожалуйста, предоставьте любое предложение. - person Abhay Jangde; 14.12.2017
comment
не видя ваш экран xml, вам трудно помочь, но если у вас есть элементы с одинаковым атрибутом и вы используете подход, который я разместил правильно => он должен прокручиваться до первого элемента, так как он имеет .instance(0) - person dmle; 14.12.2017