Метод прокрутки не работает при тестировании автоматизации Android

Я пытаюсь реализовать метод салфетки. Может быть, я знаю, что является правильным способом достижения моей цели?

public void swipeWithCordinateLocation(WebDriver driver,double startX, double startY,double endX,double endY, double Duration) { JavascriptExecutor js = (JavascriptExecutor) driver; HashMap<String, Double> swipeObject = new HashMap<String, Double>(); swipeObject.put("x", startX); swipeObject.put("y", startY); swipeObject.put("x", endX); swipeObject.put("y",endY ); swipeObject.put("duration", Duration); // HashMap[] param = {swipeObject}; js.executeScript("mobile: swipe", swipeObject); } common.swipeWithCordinateLocation(driver, 100.00, 500.00, 500.00, 500.00, 1.00); 

Но appium выполняет салфетки, но требует разных учетных данных

 [x=360][y=592] to [x=360][y=592] 

, что делать? Кто-нибудь может мне помочь.

Лучший способ проанализировать автоматическое прокручивание – включить опции «Показать штрихи» и «местоположение указателя» в вашем варианте разработчика.

Правильный код для параметров салфетки –

 swipeObject.put("startX", 198.00); swipeObject.put("startY", 685.00); swipeObject.put("endX", 198.00); swipeObject.put("endY", 550.00); swipeObject.put("duration", 1.0); 

Надеюсь это поможет.

Или даже лучший способ – использовать что-то вроде использования фракций –

 swipeObject.put("startX", 0.50); swipeObject.put("startY", 0.50); swipeObject.put("endX", 0.50); swipeObject.put("endY", 0.35); swipeObject.put("duration", 1.0); 

Лучшим решением является использование swipe () AppiumDriver, как показано ниже:

Проведите пальцем влево:

  public void swipeLeft() { AppiumDriver appiumDriver = (AppiumDriver) driver; appiumDriver.context("NATIVE_APP"); Dimension size = appiumDriver.manage().window().getSize(); int startx = (int) (size.width * 0.8); int endx = (int) (size.width * 0.20); int starty = size.height / 2; appiumDriver.swipe(startx, starty, endx, starty, 1000); } 

Проведите по экрану справа:

  public void swipeRight() { AppiumDriver appiumDriver = (AppiumDriver) driver; appiumDriver.context("NATIVE_APP"); Dimension size = appiumDriver.manage().window().getSize(); int endx= (int) (size.width * 0.8); int startx = (int) (size.width * 0.20); int starty = size.height / 2; appiumDriver.swipe(startx, starty, endx, starty, 1000); } 

Вы можете добиться такого же результата при помощи TouchAction

  TouchAction action = new TouchAction(androidDriver); action.press(0, 500) .waitAction(200) .moveTo(0, 200) .release() .perform(); 

Просто играйте с координатами, чтобы получить пропущенную прокрутку.

Вы также можете использовать uiautomator для того же самого. Это поможет вам автоматизировать тесты очень эффективно и быстрее.

Вы можете узнать больше об этом на странице http://developer.android.com/tools/help/uiautomator/index.html

Intereting Posts
Как наблюдать изменения сети в RxAndroid Android Build Gradle 2.3.2 Должен ли я использовать одно и то же имя пакета в приложениях для iOS и Android? JSON Error "java.lang.IllegalStateException: ожидается BEGIN_OBJECT, но был STRING в строке 1 столбец 1 путь $" Использование Butter Knife в пользовательских BaseAdapter SubClass Результаты в «Невозможно ввести представления» Как добавить несколько виджетов в одном приложении? OnSaveInstanceState () не вызвано: почему? Мое приложение получает непредвиденную ошибку, заставляет меня закрыть его … что, кажется, проблема? Как добавить подвью к ImageView в Android Как отправить файл с помощью bluetooth на андроид программно? Google Play показывает неявное разрешение READ_EXTERNAL_STORAGE Как преодолеть эту ошибку: java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет VM Как создать пользовательский ActionBar с навигационным ящиком Безопасно ли удалить папку .gradle в Android Studio? Отправляйте данные на сервер с устройства Android, когда приложение попадает в фоновый режим