Автоматизируйте IOS UITableview с помощью appium

У меня есть UITableView, который содержит около 50 элементов. В любой момент на экране видны только 6 из них. Я хочу выбрать ячейку, которая не добавлена ​​в табличное представление, или сказать, что мне нужно выбрать 25-й элемент из списка данных.

Теперь я использую этот метод для щелчка по ячейке в таблице.

wait.until(ExpectedConditions.visibilityOf(driver.findElementByAccessibilityId(element))).click();

Но это не работает, так как 25-й элемент еще не добавлен в представление. Обратите внимание, что я динамически добавляю идентификатор доступности для ячейки табличного представления в коде.

Как я могу заставить это работать?

***** Добавлено больше деталей******

У меня есть ячейка табличного представления, отображающая два текстовых представления. Краткое название валюты и длинное название валюты.

Рассмотрим пример

Фунт стерлингов

Фунты Великобритании

Теперь идентификатор доступности для этой ячейки таблицы установлен как GBP. Теперь я попытался

driver.scrollTo("GBP") и driver.scrollTo("Фунты Великобритании")

Оба не работали. Я получаю сообщение об ошибке

A element could not be located on the page using the Search parameter

Спасибо.


person Zach    schedule 08.04.2016    source источник
comment
Вы знаете текст элемента? потому что driver.scrollTo(Text) прекрасно работает в iOS.   -  person Tabish Javed    schedule 26.05.2016
comment
Вы пробовали X-Path? Индекс в x-path должен помочь вам получить доступ к элементу во время прокрутки.   -  person Naman    schedule 26.05.2016
comment
Я думаю, вы должны отобразить ячейку, прежде чем выбрать ее. Возможно, вам следует прокрутить до ячейки назначения (методом табличного представления), а затем попытаться выбрать ее. Чтобы найти индекс ячейки, вы можете определить ее модель в массиве моделей. Это необходимо, потому что TableView повторно использует ячейки, и вы меняете AccessibilityId во время выполнения для любых ячеек tableView.   -  person Andrew Romanov    schedule 31.05.2016
comment
Также вы можете прокрутить представление таблицы до некоторого смещения, если вы знаете высоту ячейки, прежде чем пытаться ее найти.   -  person Andrew Romanov    schedule 31.05.2016


Ответы (1)


    String ReqN = "Your required string"; 
    boolean flag = true;
    while (flag) {
        for (i=1;i<=6;i++) {
            String GetN = driver.findElement(By.xpath("//android.widget.HorizontalScrollView/android.widget.LinearLayout[" + i + "]")).getText();
            if (GetN.equals(ReqN)) {
                flag = false;
                System.out.println("Your result found");
            }
        }
        if (flag) {
            driver.swipe(145, 765, 145, 180, 3000);
        }
    }

String ReqN :: Ваша предопределенная строка

String GetN :: Text для каждого элемента [от 1 до 6, которые мы получаем для цикла]

Таким образом, он получает текст и соответствует для первых шести элементов, если ваш предопределенный текст не найден, затем он прокручивается от заданных осей [который является 6-м элементом до 1-го элемента]... так что вы получите новые шесть элементов, и цикл будет выполнен снова.

Ссылка Изображение Элементы и точки X,Y

person Surajsinh Dabhi    schedule 30.05.2016