Android: измерение сходства между двумя страницами активности

Я использую monkeyrunner и androidviewclient для сканирования графического интерфейса некоторых приложений для Android (т.е. это). Кстати, он работает отлично! Дело в том, что иногда, когда вы нажимаете на интерактивный компонент, он открывает ту же страницу, на которой вы находитесь, или вы уже были на этом ранее. Например, вы находитесь в домашнем каталоге вашего приложения и нажимаете домашнюю ссылку или логотип приложения, после чего вы переходите на ту же страницу (то есть снова в домашний каталог приложения!). Я хочу избежать подобных случаев. Другими словами, это может вызвать бесконечный цикл нажатия. Есть ли идея или эвристика для измерения сходства между двумя страницами активности. Или я должен спросить, какие метрики хороши для измерения сходства между двумя страницами, количеством элементов, текстом и т. Д.

2 ответа

Решение

После того, как вы сбросили дерево, вы можете сохранить его, а затем использовать некоторые вычисления расстояния до нового дампа. Например:

# dump the tree
tree1 = vc.dump()
# do something, here, like touch to navigate
someView.touch()
# dump again
tree2 = vc.dump()
# calculate the distance
d = distance(tree1, tree2)

Очевидно, дело в том, как выбрать метод расстояния. Вы можете преобразовать деревья в строки, а затем вычислить расстояние Хемминга, если они имеют одинаковую длину, или расстояние Левенштейна, если это не так.

Я использовал этот метод в некоторых проектах. Единственное, что вы должны рассмотреть, чтобы применить более поздние, это размер строк, так как матрицы становятся очень большими. Будущие версии AndroidViewClient будут включать некоторые из этих возможностей.

Кроме того, вы можете сделать некоторое визуальное сравнение, как описано здесь.

XMLUnit может быть то, что вы ищете, http://xmlunit.sourceforge.net/

Другие вопросы по тегам