38

adb shellUI テストの基本的な自動化を実行できるように、コマンドを使用してタッチ イベントをデバイスに送信しようとしています。これに関するいくつかの前のスレッドでの議論に従いました。

イベントの取得と を使用してsendevent、タッチごとに 6 つのイベント (xcoord、ycoord、2プレス2用、リリース用) を送信することを確認しました。この情報は で簡単に使用できましたsendeventgetevent、タッチスクリーン デバイス用のコマンドはあまりにも多く生成されているようです。多くのイベント。

誰かがタッチイベントをadbデバイスに送信できましたか? 解決策を共有していただけませんか。

電話でのタッチイベントの記録に取り組んでいます。その後、UI テストの一環として、同じイベントをデバイスに送り返したいと考えています。

助けてください

4

4 に答える 4

34

タッチイベントを送信するには、次のことを行う必要があります。

  1. 座標を設定:

    adb shell sendevent /dev/input/event2 3 0 x
    adb shell sendevent /dev/input/event2 3 1 y
    
  2. タッチ イベントを送信します (0 0 0ペアが必要です):

    adb shell sendevent /dev/input/event2 1 330 1
    adb shell sendevent /dev/input/event2 0 0 0
    
  3. リリース フィンガー イベントを送信します (0 0 0ペアが必要です):

    adb shell sendevent /dev/input/event2 1 330 0
    adb shell sendevent /dev/input/event2 0 0 0
    

ご注意ください:

  1. イベントを記録できます:

    adb shell getevent
    
  2. 使用する場合、geteventすべてのイベント値は 16 進数です。

于 2011-03-22T14:01:46.487 に答える
23

セッションを記録し、bash と adb だけで再生することができました。

これは私がやったことです。誰かの役に立てば幸いです。

一連の出来事を記録する

  1. データをファイルに記録するように PC を設定する ( /tmp/android-touch-events.log)

    $ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
    
  2. 電話で何かをする
  3. PCでadbコマンドを停止しますctrl-c

記録されたイベントを再生する

このコマンドは、16 進変換を行います。awk

$ awk '{printf "%s %d %d %d\n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}' /tmp/android-touch-events.log | xargs -l adb shell sendevent
于 2014-06-04T13:02:58.507 に答える