APK-файл выпуска Dexguard не показывает идентификаторы ресурсов для элементов в автомате пользовательского интерфейса

после обфускации apk с помощью dexguard идентификаторы ресурсов элементов не отображаются в инструменте uiautomator.

можно ли использовать сборку релиза dexguard для автоматизации? как сохранить идентификаторы ресурсов элементов для сборки выпуска dexguard?


person Ashok Kumar    schedule 03.08.2017    source источник


Ответы (2)


-keepresources id/** сделал свое дело.

person Ashok Kumar    schedule 29.08.2019
comment
@dheeraj в файле правил dexguard/proguard вашего проекта приложения - person Ashok Kumar; 25.02.2020

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

Если мне предоставляется идентификатор ресурса, и я внимательно изучил элементы страницы и вижу, что идентификатор уникален, я буду часто его использовать. На мой взгляд, элементы часто более последовательно обнаруживаются с использованием XPath, что позволяет использовать гораздо более подробный локатор.

Чаще всего я делаю что-то вроде

"//android.widget.TextView[@text='whatever']

или далее:

"//android.widget.TextView[@text='whatever' and @index=1]"
person Bill Hileman    schedule 03.08.2017
comment
Но мой запрос заключается в том, что у нас есть собственное приложение для Android, которое запутано с помощью dexguard. после обфускации uiautomator не может видеть идентификаторы ресурсов. мы сохранили конфигурацию идентификаторов ресурсов в конфигурационном файле dexguard, но идентификаторы ресурсов все равно не видны. Вы сделали автоматизацию на запутанном родном релизе apk? - person Ashok Kumar; 04.08.2017
comment
@Eric Lafortune есть предложения? - person Ashok Kumar; 04.08.2017
comment
Я не знаком напрямую с обфускатором. Скрывает ли он больше, чем идентификатор ресурса? Суть моего ответа в том, что вам не обязательно иметь идентификатор ресурса для формирования пригодных для использования локаторов. Или вы делаете что-то еще, что требует идентификатора ресурса? - person Bill Hileman; 04.08.2017
comment
да, нам нужны идентификаторы ресурсов для автоматизации, и это родное приложение. Кроме того, dexguard скрывает все идентификаторы ресурсов, которые также необходимы для автоматизации. - person Ashok Kumar; 07.08.2017
comment
Если вы используете Appium, зачем нужны идентификаторы ресурсов? Appium способен автоматизировать без идентификатора ресурса. - person Bill Hileman; 07.08.2017
comment
мы используем идентификаторы ресурсов для взаимодействия с элементами. вы имеете в виду xpath как обходной путь? не могли бы вы предоставить решение, если нам нужно использовать идентификаторы ресурсов? - person Ashok Kumar; 10.08.2017