1

テキストビューを見つけ、その座標を取得してクリックするスクリプトがあります。クリックするには、スクロールしてそのテキストビューを見つける必要があります。スクリプトは以下の通り、

text = 'abc'
self.device.drag((400,600), (300, 200), 0.01, 120)
tv = self.vc.findViewWithText(text)
if tv:
    (x, y) = tv.getXY()
    print >>sys.stderr, "Clicking TextView %s @ (%d,%d) ..." % (text, x, y)
    tv.touch()
else:
        print "Text is not found" %text

ドラッグします。テキスト「abc」は存在しますが、「テキストが見つかりません」と出力されます。

drag() メソッドを削除し、手動でドラッグを行ったところ、正常に機能しました (テキストを識別してクリックを行いました)。

私のドラッグ()メソッドの何が問題なのか誰にもわかりますか?

ありがとう

4

2 に答える 2

1

AndroidViewClient.dump()画面に現在表示されているものをダンプするため、スクロールしてTextView表示する必要がある場合は、最初の(暗黙の)ダンプには含まれません。したがって、スクロール後に再度ダンプする必要があります。

text = 'abc'
self.device.drag((400,600), (300, 200), 0.01, 120)
MonkeyRunner.sleep(3)
self.vc.dump()
tv = self.vc.findViewWithText(text)
if tv:
    (x, y) = tv.getXY()
    print >>sys.stderr, "Clicking TextView %s @ (%d,%d) ..." % (text, x, y)
    tv.touch()
else:
        print "Text is not found" %text

また

text = 'abc'
self.device.drag((400,600), (300, 200), 0.01, 120)
MonkeyRunner.sleep(3)
self.vc.dump()
self.vc.findViewWithTextOrRaise(text).touch()

また、睡眠についてNRPが言及した点を考慮に入れてください。

于 2012-12-29T07:04:23.933 に答える
0

MonkeyRunner はすべてのコマンドを非常に高速に実行するため、ビューの検索を開始する前にスリープを追加する必要がある場合があります。あなたのコードは次のようになります。

text = 'abc'
self.device.drag((400,600), (300, 200), 0.01, 120)
MonkeyRunner.sleep(1)
tv = self.vc.findViewWithText(text)
if tv:
    (x, y) = tv.getXY()
    print >>sys.stderr, "Clicking TextView %s @ (%d,%d) ..." % (text, x, y)
    tv.touch()
else:
        print "Text is not found" %text
于 2012-12-24T10:25:05.757 に答える