সেন্ডিভেন্ট কমান্ডটি ব্যবহার করে ডিভাইসে টাচ ইভেন্টগুলি প্রেরণ করতে ADB কীভাবে ব্যবহার করবেন?


91

আমি অ্যান্ড্রয়েড ডেগব্রিজ ব্যবহার করে কোনও ডিভাইসে স্পর্শ ইভেন্টগুলি প্রেরণের চেষ্টা করছি, যাতে আমি ইউআই পরীক্ষার জন্য কিছু বেসিক অটোমেশন করতে পারি। আমি লিঙ্কে আলোচনাটি অনুসরণ করেছি । আমি অনুকরণকারীদের সাথে স্পর্শ অনুকরণ করতে প্রেরণকারী ব্যবহার করতে সক্ষম, কিন্তু কোনও ডিভাইসে এটি করতে অক্ষম।

উপরের লিঙ্কের মতো এমুলেটরটি প্রতিটি স্পর্শের জন্য events টি অনুষ্ঠান প্রেরণ করে বলে মনে হচ্ছে (এক্সকর্ড, ইকোর্ড, 2 টি প্রেসের জন্য, মুক্তির জন্য 2) এবং এই তথ্যটি প্রেরণগুলিতে ব্যবহার করা সহজ ছিল, তবে কোনও ডিভাইসের জন্য টাচস্ক্রিনের একটি জেনেন্ট হিসাবে মনে হচ্ছে অনেক বেশি ইভেন্ট তৈরি করে।

কেউ কি কোনও ডিভাইসে এডিবি থেকে স্পর্শ প্রেরণ করতে সক্ষম হয়েছেন? আপনি দয়া করে সমাধান ভাগ করতে পারেন।


ডিভাইসে, আপনি যদি পরীক্ষাগুলি যথাযথ "ইনপুট-ডিভাইসে" পাঠাচ্ছেন কিনা? অর্থাত্ টাচ-ড্রাইভার হিসাবে নিবন্ধিত ইনপুট ডিভাইস?
TheCodeArtist

উত্তর:


138

অ্যান্ড্রয়েড একটি inputকমান্ড-লাইন সরঞ্জাম নিয়ে আসে যা বিবিধ ইনপুট ইভেন্টের অনুকরণ করতে পারে। ট্যাপিং অনুকরণ করতে, এটি:

input tap x y

দূরবর্তী অবস্থান থেকে কমান্ডটি চালাতে আপনি অ্যাডবি শেল (> 2.3.5) ব্যবহার করতে পারেন:

adb shell input tap x y

4
এটি nox_adb.exe ব্যবহার করে Nox অ্যাপে পুরোপুরি কাজ করে আপনাকে ধন্যবাদ!
স্মিটারলিঙ্ক

4
ডাবল ট্যাপ পরীক্ষার জন্য আমি এই জাতীয় লুপ ক্লিক করে লিখলাম = =; যখন [$ (($ i)) -le 2]; do i = $ (($ i + 1)); ইনপুট ট্যাপ 500 800; সম্পন্ন; তবে এটি প্রতি এক সেকেন্ডে স্থানটি ক্লিক করছে। টার্মিনাল ব্যবহার করে কি আমি এটি দ্রুত করতে পারি?
ভিগনেশ কেএম

67

কোনও নির্দিষ্ট ক্রিয়া করতে (উদাহরণস্বরূপ ওয়েব ব্রাউজারটি খুলতে) আপনাকে প্রথমে কোথায় ট্যাপ করতে হবে তা নির্ধারণ করতে হবে। এটি করতে, আপনি প্রথমে চালাতে পারবেন:

adb shell getevent -l

আপনি যে ডিভাইসে টিপতে চান, সেই অবস্থানটিতে যা আপনি চান, আপনি এই আউটপুটটি দেখতে পাবেন:

<...>
/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

অ্যাডিবি আপনাকে জানিয়ে দিচ্ছে যে একটি কী টিপে (বোতাম ডাউন) 2f5, 69e পজিশনে হেক্সে 757 এবং 1694 দশমিক।

আপনি যদি এখন একই ইভেন্টটি উত্পন্ন করতে চান তবে আপনি একই অবস্থানে ইনপুট ট্যাপ কমান্ডটি ব্যবহার করতে পারেন:

adb shell input tap 757 1694

আরও তথ্য এখানে পাওয়া যাবে:

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


12
টাচ কো-অর্ডিনেটগুলি সন্ধান করতে, আমি বিকাশকারী বিকল্পগুলি -> টাচের অবস্থান দেখান using এছাড়াও, এটি দশমিকগুলিতে মান দেয়।
প্রবীণ

4
আপনি দশমিক করার হেক্স রূপান্তর আছে না চান, তাহলে আপনি আপনার শেল এটা করতে দেওয়া যাবে: adb shell input tap $((16#2f5)) $((16#69e))। এছাড়াও, কেবল পেডেন্টিক হতে হলে 0x2F5 এবং 0x69E যথাক্রমে 757 এবং 1694 হয় ... বেসগুলির মধ্যে রূপান্তর করতে আপনি কী ব্যবহার করেছেন?
ঘোটি

ধন্যবাদ @ঘোটি নিশ্চিত নন যে আমি অবশ্যই এটি অন্য কোনও বিষয় বা এরকম কিছু অনুলিপি করে রেখেছি ...
টমাস

এর উপরে বিল্ডিং আমি কমান্ডটি তৈরি করেছি যা adb shell getevent -l | grep ABS_MT_POSITION --line-buffered | awk '{a = substr($0,54,8); sub(/^0+/, "", a); b = sprintf("0x%s",a); printf("%d\n",strtonum(b))}'পূর্ণসংখ্যার হিসাবে ট্যাপের স্থান
অর্জন করে

12

২.৩.৫ এর ছিল না input tap, কেবল input keyeventএবং input text আপনি এটির জন্য বানর রেকর্ডার ব্যবহার করতে পারেন: (এটি https://stackoverflow.com/a/18959385/1587329 এ উত্তরের একটি অনুলিপি ):

আপনি এই জাতীয় বানর ব্যবহার করতে চান :

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

আপনি একটি টানুনও করতে পারেন, ক্রিয়াকলাপ শুরু করতে পারেন ইত্যাদি । MonkeyDevice এর জন্য এপিআই একবার দেখুন


5

আপনার ব্যবহারের দরকার নেই

adb শেল জেটেন্ট-এল

কমান্ড, এক্স এবং ওয়াই পেতে আপনাকে কেবল ডিভাইসে বিকাশকারী বিকল্পগুলিতে [টাচ ডেটা দেখান] সক্ষম করতে হবে command

আরও কিছু তথ্য আমার নিবন্ধে এখানে পাওয়া যাবে: https://mobileqablog.wordpress.com/2016/08/20/android-automatic-touchscreen-taps-adb-shell-input-touchscreen-tap/


5

টমাসের উত্তরের শীর্ষে বিল্ডিং, আমি খুঁজে পাওয়া পূর্ণসংখ্যা হিসাবে অবস্থানের ট্যাপের অবস্থানটি খুঁজে পাওয়ার সর্বোত্তম পন্থা:

adb shell getevent -l | grep ABS_MT_POSITION --line-buffered | awk '{a = substr($0,54,8); sub(/^0+/, "", a); b = sprintf("0x%s",a); printf("%d\n",strtonum(b))}'

ব্যবহার করুন adb shell getevent -lঘটনা একটি তালিকা পেতে, জন্য grep ব্যবহারABS_MT_POSITION ( স্পর্শ ইভেন্টগুলির সাথে লাইন পান) এবং অবশেষে প্রাসঙ্গিক হেক্স মানগুলি পেতে, তাদেরকে জিরোগুলি ছিনিয়ে নেওয়ার জন্য এবং হেক্সকে পূর্ণসংখ্যায় রূপান্তর করতে ব্যবহার করুন। এটি যখন আপনি ডিভাইসে টিপেন কেবল তখনই টানা টার্মিনালে ক্রমাগত x এবং y স্থানাঙ্কগুলি মুদ্রণ করে।

তারপরে আপনি কমান্ডটি প্রেরণের জন্য এই অ্যাডবি শেল কমান্ডটি ব্যবহার করতে পারেন:

adb shell input tap x y

4

অ্যান্ড্রয়েডের uiautomator , অ্যাডবি শেল uiautomator সহ [...] বা এসডিকে সঙ্গে সরাসরি আসে .jar ব্যবহার করে বিবেচনা করুন।


বিটিডাব্লু, বাজারে এমন কয়েকটি সরঞ্জাম রয়েছে যা আপনার জন্য অ্যান্ড্রয়েডের অটোমেশন পরীক্ষাটি বেশ সহজ করে তুলতে পারে।
এলিস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.