0

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

4

2 回答 2

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 距离,如果它们不同,则计算Levenshtein 距离

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

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

于 2013-07-03T06:20:10.850 回答
0

XMLUnit 可能是您正在寻找的东西, http: //xmlunit.sourceforge.net/

于 2013-07-02T15:06:10.367 回答