Мобильный элемент больше не существует в DOM - селен - PullRequest
0 голосов
/ 14 октября 2019

Используя appium + селен + Java. Попытка дождаться мобильного элемента с определенным текстом.

В мобильном приложении я захожу на страницу, а при входе в систему имею android.widget.TextView (0) с текстом, поэтому я проверяю этот текст и, если новый элемент android.widget.TextView (0) с разнымитекст появляется, тогда я могу пойти с другими шагами. Когда появляется новый элемент, старый не существует

Для этого используется следующий код, но тогда я вижу

Cached elements 'By.clazz: android.widget.TextView' do not exist in DOM anymore 

Код:

public static MobileElement waitForElementText(AndroidDriver driver, int index, String text, int timeout) {

        List<MobileElement> mobileElement = null;

        do {

            mobileElement = new WebDriverWait(driver, timeout)
                    .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("android.widget.TextView")))
                    .stream().map(element -> (MobileElement) element).collect(Collectors.toList());
            System.out.println("waiting for: " + text + " found: " + mobileElement.get(index).getText());
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } while (mobileElement.get(index).getText() != text);

        System.out.println(mobileElement.get(index).getText());

        return mobileElement.get(index);
    }

любые идеи, что яЯ делаю не так?

1 Ответ

0 голосов
/ 16 октября 2019

Cached elements 'By.clazz: android.widget.TextView' do not exist in DOM anymore происходит потому, что когда вы пытаетесь получить текст, элемент отсутствует на странице. Таким образом, вместо того, чтобы ставить условие while при проверке текста, вы должны поместить условие в размер списка элементов. Размер станет нулевым, если элемент отсутствует на странице.

Измените условие while на:

while (mobileElement.size()>0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...