Работа с калебасой Завершить действие с помощью диалогового окна

Я хочу протестировать функцию совместного использования приложения, но не знаю, как обрабатывать диалоговое окно Android "Завершить действие с помощью" (Facebook, Gmail и т. д.)
Когда я использую query("*"), он возвращает пустой набор полей.
Есть ли способ обрабатывать такие системные диалоги с помощью Calabash или каким-либо другим способом проверить такую ​​​​функциональность, как совместное использование?

Я запускаю свои тесты на физическом устройстве.

Редактировать: Если нет возможности проверить, был ли открыт диалог или нет, то, возможно, это возможно с помощью оболочки adb или чего-то в этом роде?


person kjuri    schedule 29.07.2014    source источник
comment
как это относится к ruby?   -  person Uri Agassi    schedule 29.07.2014
comment
насколько я знаю, Calabash использует рубин. это мой первый вопрос здесь, поэтому, пожалуйста, будьте спокойны.   -  person kjuri    schedule 29.07.2014
comment
Насколько я знаю, если вы выполняете действие в своем приложении, его можно автоматизировать с помощью калебаса, но если вы откроете ссылку на стороннее приложение, вы не сможете взаимодействовать с этим приложением с помощью калебаса.   -  person Chathura Palihakkara    schedule 30.07.2014
comment
И нет ли способа проверить, открыто ли какое-либо диалоговое окно? Если не использовать Calabash, то, может быть, использовать adb или что-то в этом роде?   -  person kjuri    schedule 31.07.2014


Ответы (1)


Это не очень элегантное решение, но вы можете имитировать касания экрана с помощью adb. Здесь есть ответ, который охватывает это - имитация касания с использованием ADB

Изменить: добавлены некоторые подробности об использовании adb для создания дампа файла всех элементов пользовательского интерфейса.

В Android SDK в папке platform/android-L есть инструмент под названием uiautomater.jar, который adb может использовать для запуска тестов (хотя я никогда не использовал его для этого) и для дампа XML-файла видимых элементов.

adb shell uiautomator dump test.xml

создаст файл xml (на устройстве, а не на вашем компьютере), который вы затем сможете просмотреть в своем коде, чтобы проверить наличие нужного всплывающего окна. Если вы хотите взаимодействовать с всплывающим окном, вы можете использовать координаты, указанные в дампе xml, чтобы выбрать, какой из них вы хотите, и использовать событие касания adb, чтобы щелкнуть его.

Не очень красивое решение, но, надеюсь, не слишком сложное для ваших тестов :)

person alannichols    schedule 31.07.2014
comment
Я уже нашел некоторые решения для прикосновения к элементам через adb, но я до сих пор не знаю, можно ли просто (это не так просто, как я вижу) проверить, открыта ли диалоговая система - это основная цель теста, который я письмо. Но все равно большое спасибо за предоставленную ссылку - много интересного прочитал :) - person kjuri; 31.07.2014
comment
Извините, я не видел вашу правку. Опять же, это не красивое решение, но вы можете сделать дамп всех видимых элементов пользовательского интерфейса в файл xml и при поиске файла для всплывающего окна. Я отредактирую свой ответ, чтобы включить некоторые детали. - person alannichols; 01.08.2014
comment
Большое спасибо! Это сработало для меня :) Это код, который я использовал в определении шага: system("adb shell uiautomator dump /storage/emulated/legacy/test.xml") system("adb pull /storage/emulated/legacy/test.xml ~") unless system("grep -e 'Facebook' ~/test.xml") raise "'Share' button doesn\'t work'" end - person kjuri; 01.08.2014