Как прокрутить до определенной даты в календаре в Appium Java - PullRequest
0 голосов
/ 10 мая 2019

Я прокручиваю список календаря в году, чтобы выбрать конкретную дату, например "1998". Так как прокрутить до заданного года и нажать на этот год?

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


        MobileElement element = (MobileElement) driver
                .findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\"" + text + "\").instance(0))");
        element.click();

1 Ответ

2 голосов
/ 10 мая 2019

Вы можете использовать mobile:shell команду для непрерывной прокрутки вверх, пока на экране не появится нужный год, пример кода будет выглядеть примерно так:

Dimension windowSize = driver.manage().window().getSize();
Map<String, Object> args = new HashMap<>();
args.put("command", "input");
args.put("args", Lists.newArrayList("swipe", windowSize.width / 2,
        windowSize.height / 2, windowSize.width / 2, windowSize.height));
while (driver.findElements(By.xpath("//android.widget.TextView[@text='1998']")).size() == 0) {
    driver.executeScript("mobile: shell", args);
}
driver.findElement(By.xpath("//android.widget.TextView[@text='1998']")).click();

Демонстрация:

enter image description here


Для SwipeWhileNotFound доступна команда, доступная через SeeTest Appium Extension , это даже прощесократит код до однострочного:

seetest.swipeWhileNotFound("Up", 0, 2000, "NATIVE", "xpath=//android.widget.TextView[@text='1998']", 0, 1000, 5, true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...