uiautomator dump возвращает дамп предыдущего экрана

Я пытаюсь использовать appium для тестирования стороннего приложения. Проверяя наличие элемента на экране, appium не может найти элемент, даже если он присутствует на экране.

Пробовал следующие вещи как часть корневого вызова:
1. Получение иерархии xml страниц с помощью Appium drive getpageSource (). Это возвращает XML-дамп предыдущего экрана.
2. Получение XML-иерархии страниц с использованием дампа Android uiautomator. Это также возвращает то же самое, что и вывод appium.

Другие наблюдения:
1. Такое поведение непоследовательно. Иногда элемент встречается. В других случаях это не так.
2. Когда я пытаюсь проверить иерархию с помощью программы просмотра иерархии, дамп xml относится к текущей странице, а не к предыдущей. Это почти указывает на то, что средство просмотра иерархии получает дамп xml способом, отличным от uiautomator.

Есть какие-нибудь подсказки, как я могу это исправить?

Спасибо, Аарти


person aarthi_ram    schedule 01.02.2016    source источник
comment
это где-то около веб-просмотра в приложении?   -  person Naman    schedule 01.02.2016
comment
Нет. Веб-просмотры есть, но ошибка возникает даже на экранах без веб-просмотра.   -  person aarthi_ram    schedule 01.02.2016
comment
Я заметил, что Appium также не всегда получает текущую страницу. Лучшее решение - использовать wait (seleniumhq.org/docs/04_webdriver_advanced.jsp)   -  person econoMichael    schedule 01.02.2016


Ответы (2)


Если вы используете UiDevice для тестирования, просто переключите setCompressedLayoutHierarchy().

Я не знаю фундаментальной причины, связанной с этой проблемой ─ дамп такой же, как и предыдущий. Однако при переключении он будет извлекать явно текущую иерархию представлений.

person ckcks12    schedule 19.03.2016

Попробуйте использовать неявное или явное ожидание, так как они прерывистые

неявный

 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Откровенный

WebElement Elementid = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("Elementid ")));
person karthick23    schedule 02.02.2016