Я изучаю Android уже несколько месяцев, особенно различные способы тестирования приложений для Android.До сих пор я работал с JUnit и Robotium.Я научился использовать Robotium довольно хорошо, даже для тестирования приложений для черного ящика, и я думаю, что это действительно круто.Но при тестировании приложений «черного ящика» с Robotium единственный способ нажать кнопку - это использовать ее метку, координаты или индекс.Дело в том, что если кнопка является кнопкой изображения, то я не могу использовать ее метку, и я боюсь, что использование координат не позволит мне выполнять свои тесты на разных устройствах из-за разных размеров экрана, поэтому виды могутбыть размещены в другом положении, когда они масштабируются.Таким образом, это оставляет меня только с индексом (если ... нет другого способа, которого я еще не знаю?), Но проблема в том, что у меня нет способа узнать индекс представления, пока единственный способ, которым я могумы решили получить индекс кнопки, написав тест, в котором Robotium нажимает на кнопку с индексом 0, а затем 1, и тогда я могу самостоятельно определить шаблон и считать до тех пор, пока не получу индекс нужной кнопки.
Но, поскольку это довольно громоздко (особенно если у меня есть несколько кнопок), я пытаюсь создать инструмент, который позволяет мне определять представление и его индекс при нажатии, например, например, я тестируюмузыкальный проигрыватель и я хочу сказать Robotium, чтобы нажать на кнопку «играть», так как это кнопка изображения, я пошлю индексный номер в качестве параметра для clickOnImageButton (int index), но я не знаю его индекс,поэтому я бы щелкнул по нему, и этот инструмент напечатает что-то вроде «Вы нажали ImageButton с индексом 3», если это возможно, в качестве тоста или в консоли.
Теперь здесьприходит мой вопрос, есть ли способ сделать это? Я пытался создать службу, использующую ее для захвата событий щелчка, но затем я прочитал этот пост: Android обнаруживает состояние касания из любого приложения , поэтомукажется, что по соображениям безопасности это невозможно, так как я считаю, что мне, безусловно, нужно захватывать события кликов из других приложений и элементов их просмотра.Я попытался увидеть, предоставляет ли logcat эту информацию, но не дает, наконец, я пытаюсь использовать getevent из adb, но его вывод труден для понимания, и кажется, что выходные данные getevent тоже являются координатами, есть ли способполучить представление и его индекс на основе его координат ?.Я пытался найти объяснение тому, как обезьяна работает тоже в случае, если есть что-то, что могло бы помочь там, но вся документация, которую я нахожу, касается как использовать это, а не как это работает.Интересно, знает ли кто-нибудь из вас, как Testdroid или любому из инструментов записи / воспроизведения удается захватывать эти клики и воспроизводить их на разных устройствах.
Я очень ценю вашу помощь, и извините за мой длинный вопрос, это мой первый пост, поэтому я пытаюсь понять, что именно я хочу сделать, надеюсь, я сделал.