Package: emulator-Thw-Fix
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ạo các hành độngem=ld.emulator[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_existedswipesend_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 tuple hoặc dict 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)send_textGửi đoạn văn bảntext.em.send_text(text)send_eventGửi event tới emulatorimportemulatorfromemulatorimportkeysld=emulator.LDPlayer("path/to/ldplayer dir")em=ld.emulators[0].start()em.wait(5).send_event(keys.KEYCODE_CALL)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 tìm được trả vềNoneimportemulatorfromemulator.nodeimportByld=emulator.LDPlayer("path/to/ldplayer")em=ld.emulator[0].start().wait(10)em.find_node(By.TEXT,"node text")find_nodesTrả về mộtlistlà tất cả các node trong window_dump có giá trị khới với gía trị đã choimportemulatorfromemulator.nodeimportByld=emulator.LDPlayer("path/to/ldplayer")em=ld.emulators[0].start().wait(10)nodes=em.find_nodes(By.TEXT,"text node")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()