私は monkeyrunner と androidviewclient を使用して、一部の Android アプリ (つまり、this ) の GUI をクロールしています。ところで、それはうまくいっています!問題は、クリック可能なコンポーネントをクリックすると、現在表示されているページまたは以前に表示されたページと同じページが開く場合があることです。たとえば、アプリのホーム ディレクトリにいて、ホーム リンクまたはアプリのロゴをクリックすると、同じページに移動します (つまり、アプリのホーム ディレクトリが再び!)。このようなケースは避けたいものです。つまり、クリックの無限ループが発生する可能性があります。2 つのアクティビティ ページ間の類似性を測定するためのアイデアやヒューリスティックはありますか。または、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)
明らかに、コツは距離法の選択にあります。ツリーを文字列に変換し、同じ長さの場合はハミング距離を計算し、そうでない場合はレーベンシュタイン距離を計算できます。
私はいくつかのプロジェクトでこの方法を使用しています。後者を適用するために考慮すべき唯一のことは、行列が非常に大きくなるため、文字列のサイズです。AndroidViewClientの将来のバージョンには、これらの機能の一部が含まれる予定です。
または、ここで説明されているように視覚的な比較を行うこともできます。
于 2013-07-03T06:20:10.850 に答える