Package: emulator-Thw
emulatorpackage này hỗ trợ điều khiển các phần mềm giả lập (Hiện tại chỉ hỗ trợ phần mềm LDPlayer)Installationpipinstallemulator-thwUsageExample startedLDPlayerimportemulatorld=emulator.LDPlayer(ldplayer_dir="C:/LDPlayer/LDPlayer4.0")print(ld.emulators)Có hai cách để lấy ldplayer trongLDPlayerlà dùngindexld.emulators[0]hoặc dùngnameld.emulator["LDPlayer"]. Tôi khuyên bạn nên sử dụng index, vì name có thể trùng lặp dẫn tới điều khiển sai ldplayer.Tạo LDPlayer mớiem=ld.new("New-LDPlayer")em.start()Xóa LDPlayerem_remove=ld.emulators[0]ld.remove(em_remove)Sao chép LDPlayerem_copy=ld.emulators[0]ld.copy(em_copy)Sắp xếp các cửa sổ LDPlayerforeminld.emulators:em.start(wait=False)ld.sort_window()Đặt giá trị ADB debugging (mặc định sẽ tự bật ADB debugging cho tất cả LDPlayer, nhưng có một số phiên bản LDPlayer mặc dù ADB debugging hiển thị đã bật nhưng không thể kết nối và phải thực hiện bật lại một cách thủ công)em=ld.emulators[0]ld.set_ADB_debugging(em,True)# turn on ADB debuggingld.set_ADB_debugging(em,False)# turn off ADB debuggingem.start(wait=False)Tạo các hành độngem=ld.emulators[0]em.start()em.tap((100,100))# code từng dòngem.wait(3).swipe((200,100),(10,100)).wait(3).quit()# code 1 chuỗi hành độngBỏ quaquit()bằng cách sử dụngwithwithld.emulators[0].start()asem:em.tap((100,100))List methodsDanh sách các phương thức có thể sử dụngstartwait_to_startedis_runningrestartrenamelist_packagesinstall_appuninstall_apprun_appkill_appclear_appset_locateupdate_propertiesget_propertiessettingdown_cpubackuprestoreactionscanpullpushcaptureadb_connectedtaptap_to_imgtap_to_imgswait_img_existedswipeholddrag_dropsend_textsend_eventhomebackapp_switcherdump_xmlfind_nodefind_nodeswaithideshowquitstartKhởi chạy emulator. Nếu tham sốwait=Truesẽ gọi phương thứcwait_to_stared().em.start(wait=True)wait_to_startedChờ cho quá trình khởi chạy hoàn tất (thực chất là chờ kết nối ADB).em.wait_to_started()is_runningTrả vềTruenếu emulator đang chạy ngược lạiFalseem.is_running()restartKhởi chạy lại emulator, tham sốwaittương tựstart()em.restart(wait=True)renameĐổi tên emulator thànhnew_nameem.rename(new_name="New-Name-LDPlayer")list_packagestrả về danh sách các package đã cài đặt trên thiết bịpackages=em.list_packages()print(packages)install_appCài đặt ứng dụng,sourcecó thể là đường dẫn tới file.apkhoặcpackage nameem.install_app(source="example_app.apk")uninstall_appGỡ cài đặt ứng dụng có package name tương ứng. Xem thêm vềlist_packagesem.uninstall_app(package_name="com.example.app")run_appMở dứng dụng có package name tương ứng. Xem thêm vềlist_packagesem.run_app(package_name="com.android.chrome")kill_appDừng dứng dụng có package name tương ứng. Xem thêm vềlist_packagesem.kill_app(package_name="com.android.chrome")clear_appXóa data của ứng dụng có package name tương ứng. Xem thêm vềlist_packagesem.clear_app(package_name="com.android.chrome")set_locateCài đặt locateem.set_locate(locate="locate")update_propertiesCập nhật thông tin thiết bị, tham số prop là 1dictvới key là tên property và value là giá trị tương ứngem.update_properties(prop)get_propertiesTrả về 1dictvới key là tên property và value là giá trị propertyprop=em.get_properties()print(prop)settingcài đặt thông số emlator, tham số là 1 EmulatorOptionsimportemulatorfromemulator.optionimportEmulatorOptionsld=emulator.LDPlayer("path/to/ldplayer/")options=EmulatorOptions()options.set_resolution(width=128,height=240,dpi=120)em=ld.emulators[0]em.setting(options)em.start()down_cpuem.down_cpu(rate=50)backupTạo file backup emulatorem.backup(file_path="C:/backup.ldbk")restoreem.restore(file_path="C:/backup.ldbk")actionactions={"action":"value"}em.action(actions=actions)scanem.scan(file_path="C:/scan.png")pullĐưa fileremotetừ emulator về PC thànhlocalem.pull(remote="sdcard/remote.txt",local="C:/local.txt")pushĐưa filelocaltừ PC lên emulator thànhremoteem.push(local="C:/local.txt",remote="sdcard/remote.txt")captureChụp ảnh màn hình và lưu thànhas_fileem.capture(as_file="path/to/save_as.png")adb_connectedTrả vềTruenếu ADB đã kết nối với emulator ngược lạiFalse. Bạn sẽ cần bậtADB debuggingđể kết nối ADBem.adb_connected()tapNhấn vào vị trí pos, là 1 list hoặc tuple có dạng(x, y). Có thể truyền vào nhiều pos để tap nhiều lần vào nhiều vị trí khác nhau.em.tap((200,200))em.tap((150,200),(250,250))tap_to_imgNhấp vào hình ảnh khớp với hình ảnh được cho.timeoutlà thời gian chờ hình xuất hiện nếu nhỏ hơn 0 sẽ chờ vô hạn mặc địnhtimeout=0,thresholdlà độ chính xác khi tìm kiếm, nằm trong khoảng từ 0 tới 1 mặc địnhthreshold=0.8.em.tap_to_img(img_path="path/to/img",timeout=0,threshold=0.8)tap_to_imgsNhấn vào tất cả hình ảnh khớp với hình ảnh được cho.timeoutlà thời gian chờ hình xuất hiện nếu nhỏ hơn 0 sẽ chờ vô hạn mặc địnhtimeout=0,thresholdlà độ chính xác khi tìm kiếm, nằm trong khoảng từ 0 tới 1 mặc địnhthreshold=0.8.em.tap_to_imgs(img_path="path/to/img",timeout=0,threshold=0.8)wait_img_existedChờ cho tới khi hình ảnh xuất hiện trên màn hình, chờ tối đatimeoutgiây, nếutimeout=0sẽ chờ vô hạn cho tới khi có hình ảnh.thresholdlà độ chính xác khi tìm kiếm nằm trong khoảng 0 tới 1 mặc địnhthreshold=0.8.em.wait_img_existed(img_path="path/to/img",timeout=0,threshold=0.8)swipeVuốt từ vị trí_fromtới vị trítotrong khoảng thời giandurationmillisecond.em.swipe(_from=(100,200),to=(500,200),duration=100)holdNhấn giữ tại vị trípostrong thời giandurationmillisecondem.hold(pos=(250,150),duration=500)drag_dropKéo thả từ vị trí_fromtới vị trítoem.drag_drop(_from=(250,150),to=(1000,150))send_textGửi đoạn văn bảntext.em.send_text(text)send_eventGửi event tới emulator. Nhấn giữ nếulong_press = Trueimportemulator.keysem.send_event(emulator.keys.KEYCODE_CALL,long_press=False)homeNhấn vào nút homeem.home()backNhấn vào nút backem.back()app_switcherNhấn vào nút app switcherem.app_switcher()dump_xmlLưu window_dump thành fileem.dump_xml(as_file="path/local.xml")find_nodeTrả vềNodeđầu tiên trong window_dump có giá trị khớp với giá trị đã cho, nếu không tìm được trả vềNonefromemulator.nodeimportBynode=em.find_node(By.TEXT,"LD Store")find_nodesTrả về mộtlistlà tất cả các node trong window_dump có giá trị khới với gía trị đã chofromemulator.nodeimportBynodes=em.find_nodes(By.TEXT,"LD Store")waitDừng chương trình trong second giâyem.wait(second)hideẨn emulatorem.hide()showHiển thị emulatorem.show()quitTắt emulatorem.quit()