Uses -dumpsys activity top- instead of -uiautomator- to automate Android
Tested against Windows / Python 3.11 / Anaconda
pip install adbactivityautolite
from adbactivityautolite import UiActivityDumpLite
adbpath = r"C:\Android\android-sdk\platform-tools\adb.exe"
serial_number = "127.0.0.1:5555"
ad = UiActivityDumpLite(
adb=None,
adb_path=adbpath,
serial_number=serial_number,
)
# Alternative:
# adbpath = r"C:\Android\android-sdk\platform-tools\adb.exe"
# serial_number = "127.0.0.1:5555"
# # s2 = AdbCommands(adbpath, serial_number) #
# ad=UiActivityDumpLite(adb=s2)
df = ad.get_df(
timeout=60,
with_fu=True,
t_long_touch=1,
)
print(df[20:30].to_string())
df.loc[df.aa_id_information == "app:id/app_name_three"].ff_mouse_longtap.iloc[0](
3
) # 3 seconds click
df.loc[df.aa_id_information == "app:id/app_name_three"].ff_mouse_tap.iloc[0]()
# aa_activity_id aa_activity_index aa_area aa_bounds aa_center_x aa_center_x_cropped aa_center_y aa_center_y_cropped aa_class_name aa_clickable aa_complete_dump aa_context_clickable aa_cropped_x_end aa_cropped_x_start aa_cropped_y_end aa_cropped_y_start aa_depth aa_drawn aa_enabled aa_focusable aa_get_parents aa_hashcode_hex aa_hashcode_int aa_height aa_height_cropped aa_id_information aa_is_child aa_long_clickable aa_mID_hex aa_mID_int aa_old_index aa_pflag_activated aa_pflag_dirty_mask aa_pflag_focused aa_pflag_hovered aa_pflag_invalidated aa_pflag_is_root_namespace aa_pflag_prepressed aa_pflag_selected aa_pure_id aa_scrollbars_horizontal aa_scrollbars_vertical aa_visibility aa_width aa_width_cropped aa_x_end aa_x_end_relative aa_x_start aa_x_start_relative aa_y_end aa_y_end_relative aa_y_start aa_y_start_relative ff_dpad_longtap ff_dpad_tap ff_gamepad_longtap ff_gamepad_tap ff_joystick_longtap ff_joystick_tap ff_keyboard_longtap ff_keyboard_tap ff_mouse_longtap ff_mouse_tap ff_stylus_longtap ff_stylus_tap ff_tap ff_touchnavigation_longtap ff_touchnavigation_tap ff_touchpad_longtap ff_touchpad_tap ff_touchscreen_longtap ff_touchscreen_tap ff_trackball_longtap ff_trackball_tap parent_000 parent_001 parent_002 parent_003 parent_004 parent_005 parent_006 parent_007 parent_008 parent_009 parent_010 parent_011 parent_012 parent_013 parent_014 parent_015 parent_016 parent_017 parent_018
# 11 11 1 7632 (642, 828, 801, 876) 721 721 852 852 android.widget.TextView False android.widget.TextView{2886955 V.ED..... ........ 0,142-159,190 #7f080062 app:id/app_name_three} False 801 642 876 828 11 True True False loc: 11 2886955 42494293 48 48 app:id/app_name_three True False 7f080062 2131230818 42 False False False False False False False False id/app_name_three False False V 159 159 801 159 642 0 876 190 828 142 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 x: 721 y: 852 t:1 x: 721 y: 852 39 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 12 12 1 10000 (830, 720, 930, 820) 880 880 770 770 android.widget.FrameLayout False android.widget.FrameLayout{ef66c5b V.E...... ......ID 29,34-129,134 #7f080057 app:id/app_image_four} False 930 830 820 720 11 False True False loc: 12 ef66c5b 251030619 100 100 app:id/app_image_four True False 7f080057 2131230807 44 False True False False True False False False id/app_image_four False False V 100 100 930 129 830 29 820 134 720 34 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 x: 880 y: 770 t:1 x: 880 y: 770 43 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 13 13 1 7632 (801, 828, 960, 876) 880 880 852 852 android.widget.TextView False android.widget.TextView{bb345d1 V.ED..... ........ 0,142-159,190 #7f08005f app:id/app_name_four} False 960 801 876 828 11 True True False loc: 13 bb345d1 196298193 48 48 app:id/app_name_four True False 7f08005f 2131230815 46 False False False False False False False False id/app_name_four False False V 159 159 960 159 801 0 876 190 828 142 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 x: 880 y: 852 t:1 x: 880 y: 852 43 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 14 14 1 10000 (989, 720, 1089, 820) 1039 1039 770 770 android.widget.FrameLayout False android.widget.FrameLayout{8a57337 V.E...... ......ID 29,34-129,134 #7f080056 app:id/app_image_five} False 1089 989 820 720 11 False True False loc: 14 8a57337 145060663 100 100 app:id/app_image_five True False 7f080056 2131230806 48 False True False False True False False False id/app_image_five False False V 100 100 1089 129 989 29 820 134 720 34 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 x:1039 y: 770 t:1 x:1039 y: 770 47 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 15 15 1 7584 (960, 828, 1118, 876) 1039 1039 852 852 android.widget.TextView False android.widget.TextView{dd56e0d V.ED..... ........ 0,142-158,190 #7f08005e app:id/app_name_five} False 1118 960 876 828 11 True True False loc: 15 dd56e0d 232091149 48 48 app:id/app_name_five True False 7f08005e 2131230814 50 False False False False False False False False id/app_name_five False False V 158 158 1118 158 960 0 876 190 828 142 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 x:1039 y: 852 t:1 x:1039 y: 852 47 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 16 16 1 10000 (1147, 720, 1247, 820) 1197 1197 770 770 android.widget.FrameLayout False android.widget.FrameLayout{2d40bd3 V.E...... ......ID 29,34-129,134 #7f080059 app:id/app_image_six} False 1247 1147 820 720 11 False True False loc: 16 2d40bd3 47451091 100 100 app:id/app_image_six True False 7f080059 2131230809 52 False True False False True False False False id/app_image_six False False V 100 100 1247 129 1147 29 820 134 720 34 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 x:1197 y: 770 t:1 x:1197 y: 770 51 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 17 17 1 7584 (1118, 828, 1276, 876) 1197 1197 852 852 android.widget.TextView False android.widget.TextView{d77de09 V.ED..... ........ 0,142-158,190 #7f080061 app:id/app_name_six} False 1276 1118 876 828 11 True True False loc: 17 d77de09 225959433 48 48 app:id/app_name_six True False 7f080061 2131230817 54 False False False False False False False False id/app_name_six False False V 158 158 1276 158 1118 0 876 190 828 142 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 x:1197 y: 852 t:1 x:1197 y: 852 51 30 28 26 24 6 5 4 3 2 0 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 18 18 1 30210 (324, 686, 483, 876) 403 403 781 781 android.widget.LinearLayout True android.widget.LinearLayout{d7ec186 VFE...C.. .......D 66,0-225,190 #7f080050 app:id/appOneLinearLayout} False 483 324 876 686 10 False True True loc: 18 d7ec186 226410886 190 190 app:id/appOneLinearLayout True False 7f080050 2131230800 31 False True False False False False False False id/appOneLinearLayout False False V 159 159 483 225 324 66 876 190 686 0 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 x: 403 y: 781 t:1 x: 403 y: 781 30 28 26 24 6 5 4 3 2 0 1 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 19 19 1 30210 (483, 686, 642, 876) 562 562 781 781 android.widget.LinearLayout True android.widget.LinearLayout{af57012 VFE...C.. .......D 225,0-384,190 #7f080053 app:id/appTwoLinearLayout} False 642 483 876 686 10 False True True loc: 19 af57012 183857170 190 190 app:id/appTwoLinearLayout True False 7f080053 2131230803 35 False True False False False False False False id/appTwoLinearLayout False False V 159 159 642 384 483 225 876 190 686 0 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 x: 562 y: 781 t:1 x: 562 y: 781 30 28 26 24 6 5 4 3 2 0 1 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
# 20 20 1 30210 (642, 686, 801, 876) 721 721 781 781 android.widget.LinearLayout True android.widget.LinearLayout{fb67b5e VFE...C.. .......D 384,0-543,190 #7f080052 app:id/appThreeLinearLayout} False 801 642 876 686 10 False True True loc: 20 fb67b5e 263617374 190 190 app:id/appThreeLinearLayout True False 7f080052 2131230802 39 False True False False False False False False id/appThreeLinearLayout False False V 159 159 801 543 642 384 876 190 686 0 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 x: 721 y: 781 t:1 x: 721 y: 781 30 28 26 24 6 5 4 3 2 0 1 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
Metadata
Release files for adbactivityautolite 0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| adbactivityautolite-0.10.tar.gz | 34.5 kB | Without provenance | Details for adbactivityautolite-0.10.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adbactivityautolite-0.10-py3-none-any.whl | Python 3 | none | any | Details for adbactivityautolite-0.10-py3-none-any.whl |
Total release size: 68.5 kB
Release files / adbactivityautolite-0.10.tar.gz
| Download URL | adbactivityautolite-0.10.tar.gz |
|---|---|
| Size | 34.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00560811bd1a2847e27e40128226c621967215bc15ed28903798b72da266a5ac
|
|
BLAKE2b-256 checksum How to use checksums |
9acf18735e45e0942081fef6e2aeeb4a3bcbb3d1f57b14b2aa02b2d4ac2c50dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|
Release files / adbactivityautolite-0.10-py3-none-any.whl
| Download URL | adbactivityautolite-0.10-py3-none-any.whl |
|---|---|
| Size | 34.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d56fd75cf5316a0203efbbf2141adbd29e51d4e6374e57d936de310cae32b58f
|
|
BLAKE2b-256 checksum How to use checksums |
4c7592df08b73e429ca64adf03a5a24ffc9412a2706c0728b478a9b70b77ca03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|
Security for adbactivityautolite 0.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.