Android:测量两个活动页面之间的相似性

时间:2013-07-02 14:57:02

标签: android similarity monkeyrunner androidviewclient

我正在使用monkeyrunner和androidviewclient来抓取一些Android应用程序的GUI(即this)。顺便说一句,它工作得很好!问题是,有时候当你点击一个可点击的组件时,它会打开你所在的同一个页面,或者你之前就已经使用过它。例如,您位于应用程序的主目录中,然后单击主页链接或应用程序徽标,然后转到同一页面(即应用程序的主目录!)。我想避免这种情况。换句话说,这可能导致无限循环的点击。是否有任何想法或启发式方法来衡量两个活动页面之间的相似性。或者我应该问,哪些指标有助于衡量两个页面之间的相似性,元素数量,文本等等。

2 个答案:

答案 0 :(得分: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)

显然,诀窍在于如何选择距离法。您可以将树转换为字符串,然后计算Hamming distance(如果长度相同),或Levenshtein distance(如果不是)。

我一直在某些项目中使用此方法。你应该考虑应用后者的唯一方法是字符串的大小,因为矩阵变得非常大。 AndroidViewClient 的未来版本将包含其中一些功能。

或者,您可以按照here所述进行一些视觉比较。

答案 1 :(得分:0)

XMLUnit可能就是您所需要的,http://xmlunit.sourceforge.net/