2015-03-02 2 views

ответ

2

У меня есть приложение под тестом на реальном устройстве (но оно также может быть на эмуляторе), подключенное к моему рабочему столу и запускающее его, откройте какой-либо экран/страницу. Чем я запустил uiautomatorviewer.bat как Администратор (странно, но я должен запустить его как Администратор). Чем я нажимаю значок «Скриншот устройства» в левом верхнем углу окна просмотра пользовательского интерфейса, и я вижу скриншот и классы Android на правой панели. Я могу перемещаться, щелкать разными элементами и наблюдать за их иерархией.

1

Есть ли ссылка на ссылку выше, а в ListView есть атрибуты ресурса или текста?

Я думаю, вы можете попробовать что-то вроде следующего:

xpath="(//android.widget.ListView[contains(@resource-id,'some_id')]//android.widget.View)[2]/android.widget.View" 

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

// - means any after (any child) 
/- goes immediate after 
[2] - the second item that corresponds the criteria 

, если вы знаете значение текстового атрибута, вы можете использовать что-то вроде: [contains(@text, 'some part of text')]

+0

Нет, он не имеет ресурсы идентификаторов или атрибуты текста. Но просмотр ссылок в терминах имеет контент-desc. Поэтому я использовал driver.findElement (By.xpath ("// android.view.View [@ content-desc = 'Link Link]")). Click(); Теперь мой тестовый пример проходит, но на устройстве нет клика. Должен ли я использовать android.widget.View вместо android.view.View? – Suman

+0

нет, поскольку я вижу андроид.view.View имеет атрибут clickable = true. Постарайтесь подсчитать, сколько элементов соответствует критериям, которые у вас есть на экране. 'List elements = \t \t driver.findElements (By.xpath (" // android.view.View [@ content-desc = 'Terms Link'] ")); \t \t System.out.println (elements.size()); ' – Alex

+0

также, я бы рекомендовал установить на своих настройках Android-устройства (Разработчики), чтобы показать штрихи и нажатия, чтобы увидеть, где именно скрипт Appium нажимает точно – Alex

1

Попробуйте это:

driver.findElementsByXPath("//*[@class='android.view.View' and @index='0']"); 
+0

не забудьте изменить имя и индекс класса, как вам нужно. – Gaurav

+0

Спасибо, это работает для элементов, которые в настоящее время отображаются на экране устройства, но для элементов, которые отображаются после прокрутки, не работает для них, хотя мой тестовый пример приводит к прохождению даже без фактического нажатия на экран устройства. – Suman

+0

@Suman это должно быть довольно просто. Просто найдите координаты x и y и выделите ее. И затем, используя тот же подход, о котором я упоминал выше, нажмите на элемент – Gaurav

Смежные вопросы