73

Tôi đang cố gắng gửi các sự kiện cảm ứng đến một thiết bị bằng AndroidDebugBridge, để tôi có thể thực hiện một số tự động hóa cơ bản cho các bài kiểm tra UI. Tôi đã theo dõi các cuộc thảo luận trong LINK . Tôi có thể sử dụng sendevent để mô phỏng cảm ứng trên trình giả lập, nhưng không thể làm điều tương tự trên thiết bị.

Giống như trong liên kết ở trên, trình giả lập dường như gửi ra 6 sự kiện cho mỗi lần chạm (xcoord, ycoord, 2 cho báo chí, 2 để phát hành) và thật dễ dàng sử dụng thông tin này cho người gửi, nhưng dường như có một màn hình cảm ứng cho thiết bị cảm ứng tạo ra quá nhiều sự kiện

Có ai đó đã quản lý để gửi liên lạc từ ADB đến một thiết bị? Bạn có thể vui lòng chia sẻ giải pháp.

|
  • Trên thiết bị, bạn có kiểm tra xem bạn có chuyển các sự kiện đến "thiết bị đầu vào" thích hợp không? I E. thiết bị đầu vào được đăng ký là trình điều khiển cảm ứng?

    – Phan Viết Sơn 11:26:23 17/03/2011
114

Android đi kèm với một inputcông cụ dòng lệnh có thể mô phỏng các sự kiện đầu vào linh tinh. Để mô phỏng khai thác, đó là:

input tap x y

Bạn có thể sử dụng shell adb (> 2.3.5) để chạy lệnh từ xa:

adb shell input tap x y
|
  • 1

    Lỗi: Lệnh không xác định: tap

    – Hoàng Thụy An 17:43:53 03/08/2014
  • 1

    Nó hoạt động hoàn hảo trên Ứng dụng Nox bằng cách sử dụng nox_adb.exe, cảm ơn bạn!

    – Trịnh Tố Uyên 11:57:39 14/11/2015
  • 1

    Để kiểm tra nhấn đúp, tôi đã viết một vòng lặp nhấp như thế này i = 0; trong khi [$ (($ i)) -le 2]; làm i = $ (($ i + 1)); đầu vào 500 800; làm xong; Nhưng nó đang nhấp vào địa điểm mỗi một giây. Tôi có thể làm điều đó nhanh hơn bằng cách sử dụng thiết bị đầu cuối?

    – Hoàng Minh Thủy 05:01:19 21/09/2017
48

Để thực hiện một hành động cụ thể (ví dụ: để mở trình duyệt web), trước tiên bạn cần tìm ra nơi để nhấn. Để làm điều đó, trước tiên bạn có thể chạy:

adb shell getevent -l

Khi bạn nhấn vào thiết bị, tại vị trí bạn muốn, bạn sẽ thấy đầu ra này:

<...>
/dev/input/event3: EV_KEY       BTN_TOUCH            DOWN
/dev/input/event3: EV_ABS       ABS_MT_POSITION_X    000002f5
/dev/input/event3: EV_ABS       ABS_MT_POSITION_Y    0000069e

adb đang nói với bạn rằng một phím được nhấn (nút xuống) ở vị trí 2f5, 69e ở dạng hex là 757 và 1694 ở dạng thập phân.

Nếu bây giờ bạn muốn tạo cùng một sự kiện, bạn có thể sử dụng lệnh nhấn đầu vào ở cùng một vị trí:

adb shell input tap 757 1694

Thông tin thêm có thể được tìm thấy tại:

https://source.android.com/devices/input/touch-devices.html http://source.android.com/devices/input/getevent.html

|
  • 1

    Để tìm tọa độ cảm ứng, tôi khuyên bạn nên sử dụng Tùy chọn nhà phát triển -> Hiển thị vị trí cảm ứng. Ngoài ra, nó cung cấp cho các giá trị trong số thập phân.

    – Hoàng Thụy An 02:15:33 30/05/2016
  • 1

    Nếu bạn không muốn phải chuyển đổi hex thành thập phân, bạn có thể để shell của mình làm điều đó : adb shell input tap $((16#2f5)) $((16#69e)). Ngoài ra, chỉ là pedantic, 0x2F5 và 0x69E tương ứng là 757 và 1694 ... Bạn đã sử dụng gì để chuyển đổi giữa các cơ sở?

    – Trịnh Tố Uyên 20:53:49 17/10/2016
  • 1

    Cảm ơn @ghoti không chắc chắn tôi đã sao chép nó từ một điểm khác hoặc một cái gì đó tương tự ...

    – Hoàng Minh Thủy 17:17:37 10/11/2016
10

2.3.5 không có input tap, chỉ input keyeventinput text Bạn có thể sử dụng khỉrunner cho nó: (đây là bản sao của câu trả lời tại https://stackoverflow.com/a/18959385/1587329 ):

Bạn có thể muốn sử dụng khỉrunner như thế này:

$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)

Bạn cũng có thể thực hiện thao tác kéo, bắt đầu kích hoạt, v.v. Hãy xem api cho MonkeyDevice .

|
4

Bạn không cần sử dụng

vỏ adb getevent -l

lệnh, bạn chỉ cần bật trong Tùy chọn nhà phát triển trên thiết bị [Hiển thị dữ liệu cảm ứng] để nhận X và Y.

Một số thông tin có thể được tìm thấy trong bài viết của tôi ở đây: https://mobileqablog.wordpress.com/2016/08/20/android-automatic-touchscreen-taps-adb-shell-input-touchscreen-tap/

|
4

Cân nhắc sử dụng uiautomator của Android , với uiautomator adb shell [...] hoặc trực tiếp sử dụng .jar đi kèm với SDK.

|
  • 1

    BTW, có một vài công cụ trên thị trường có thể giúp việc kiểm tra Tự động hóa của Android trở nên dễ dàng hơn đối với bạn.

    – Đỗ Thành Ðệ 10:21:39 16/06/2013

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.