Прокрутка в Appium

Я автоматизирую приложение для планшета с помощью Appium + Java. На экране у меня есть 100+ полей (Textbox + Dropdown) для автоматизации, который имеет вид прокрутки.

Чтобы автоматизировать эти 100+ полей, я перечислил все идентификаторы (из этих текстовых полей и раскрывающихся списков на этом экране), а также тестовые случаи и тестовые данные на отдельных листах Excel. Мой код запускается в цикле, выбирает Test Case, его данные и соответствующий идентификатор и выполняется. Итак, мой код выглядит так:

loop : for(int j = 1; j <= fieldCount; j++)
{
    objElementRepositoryLibrary.setElementRepositoryDataLibrary(j);

    switch(ElementRepositoryLibrary.getElementType()) {

    case "AutoPopulated":
        System.out.println(ElementRepositoryLibrary.getElementValue() + " is Autopopulated");
        break;

    case "Dropdown": 
        ElementOperation.checkElementState(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());

        if(ElementOperation.ElementAcceess.equals(false))
            System.out.println(ElementRepositoryLibrary.getElementValue() + " is disabled");
        else
            objElementOperation.dropdownSelectListner(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue(), field[0][j-1]);
        break;

    case "Button":
        ElementOperation.checkElementState(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());

        if(ElementOperation.ElementAcceess.equals(false)) {
            System.out.println(ElementRepositoryLibrary.getElementValue() + " is disabled");
            break loop;
        }
        else if(field[0][j-1].equals(""))
            System.out.println("Checking for Null value");
        else if(field[0][j-1].equals("Yes") && ElementRepositoryLibrary.getFieldName().equals("QR Scanner"))
            objElementOperation.buttonClickListner(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());
        else if(ElementRepositoryLibrary.getFieldName().contains("Capture Document"))
            objElementOperation.captureDocument(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());
            break;

    default :
        objElementOperation.textboxSetListner(qdeDriver, ElementRepositoryLibrary.getElementType(), ElementRepositoryLibrary.getLocator(), 
                ElementRepositoryLibrary.getElementValue(), field[0][j-1]);
        break;
    }   
}

ВОПРОС: После заполнения нескольких (скажем, 7) полей, я получаю NoSuchElementException, потому что мне нужно прокрутить экран, чтобы перейти к следующим полям (Это выглядит так: экран содержит 7 полей, и вы должны прокрутить, чтобы просмотреть поля ниже и automator не будет распознавать элемент, пока он не будет просмотрен на экране).

То, что я пробовал, я поймал для NoSuchElementException и выполнил операцию прокрутки. Но это не правильный способ сделать это, потому что если элемент, который был найден, отсутствует в фактическом, то он также перехватит NoSuchElementException и выполнит операцию прокрутки.

Предложите хороший способ устранить эту проблему. Дайте мне знать, если потребуется какая-либо деталь.

1 ответ

Как я понимаю из вас, код работает нормально, так что я бы сделал, чтобы завершить этот тест:

  1. (Как вы уже сделали) Нажмите на выпадающий список и найдите элемент - в этом случае вы правильно сделали, что проигнорировали исключение NoSuchElementException.
  2. Сохраните имя последнего видимого элемента (если вам нужна помощь с фрагментами кода, пожалуйста, дайте мне знать)
  3. Выполните прокрутку еще раз и найдите элемент -> снова сохраните последний элемент.
  4. После нескольких итераций последний элемент останется прежним -> это означает, что мы находимся в конце списка, в этом случае вы не пройдете тест.
Другие вопросы по тегам