package 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)
pip install emulator-thw
LDPlayer
import emulator
ld = emulator.LDPlayer(ldplayer_dir="C:/LDPlayer/LDPlayer4.0")
print(ld.emulators)
có hai cách để lấy ldplayer trong LDPlayer
là dùng index
ld.emulators[0]
hoặc dùng name
ld.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ới
em = ld.new("New-LDPlayer")
em.start()
xóa ldplayer
em_remove = ld.emulators[0]
ld.remove(em_remove)
sao chép ldplayer
em_copy = ld.emulators[0]
ld.copy(em_copy)
sắp xếp các cửa sổ ldplayer
for em in ld.emulators:
em.start(wait=False)
ld.sort_window()
tạo các hành động
em = ld.emulator[0]
em.start()
em.tap((100, 100)) # code từng dòng
em.wait(3).swipe((200, 100), (10, 100)).wait(3).quit() # code 1 chuỗi hành động
Bỏ qua quit()
bằng cách sử dụng with
with ld.emulators[0].start() as em:
em.tap((100, 100))
Danh sách các phương thức có thể sử dụng
Khởi chạy emulator. Nếu tham số wait=True
sẽ gọi phương thức wait_to_stared()
.
em.start(wait=True)
Chờ 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()
Trả về True
nếu emulator đang chạy ngược lại False
em.is_running()
Khởi chạy lại emulator, tham số wait
tương tự start()
em.restart(wait=True)
Đổi tên emulator thành new_name
em.rename(new_name="New-Name-LDPlayer")
trả về danh sách các package đã cài đặt trên thiết bị
packages = em.list_packages()
print(packages)
Cài đặt ứng dụng, source
có thể là đường dẫn tới file .apk
hoặc package name
em.install_app(source="example_app.apk")
Gỡ cài đặt ứng dụng có package name tương ứng. Xem thêm về list_packages
em.uninstall_app(package_name="com.example.app")
Mở dứng dụng có package name tương ứng. Xem thêm về list_packages
em.run_app(package_name="com.android.chrome")
Dừng dứng dụng có package name tương ứng. Xem thêm về list_packages
em.kill_app(package_name="com.android.chrome")
Xóa data của ứng dụng có package name tương ứng. Xem thêm về list_packages
em.clear_app(package_name="com.android.chrome")
Cài đặt locate
em.set_locate(locate="locate")
Cập nhật thông tin thiết bị, tham số prop là 1 dict
với key là tên property và value là giá trị tương ứng
em.update_properties(prop)
Trả về 1 dict
với key là tên property và value là giá trị property
prop = em.get_properties()
print(prop)
cài đặt thông số emlator, tham số là 1 EmulatorOptions
import emulator
from emulator.option import EmulatorOptions
ld = 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()
em.down_cpu(rate=50)
Tạo file backup emulator
em.backup(file_path="C:/backup.ldbk")
em.restore(file_path="C:/backup.ldbk")
actions = {"action": "value"}
em.action(actions=actions)
em.scan(file_path="C:/scan.png")
Đưa file remote
từ emulator về PC thành local
em.pull(remote="sdcard/remote.txt", local="C:/local.txt")
Đưa file local
từ PC lên emulator thành remote
em.push(local="C:/local.txt", remote="sdcard/remote.txt")
Chụp ảnh màn hình và lưu thành as_file
em.capture(as_file="path/to/save_as.png")
Trả về True
nếu ADB đã kết nối với emulator ngược lại False
. Bạn sẽ cần bật ADB debugging để kết nối ADB
em.adb_connected()
Nhấ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))
Nhấp vào hình ảnh khớp với hình ảnh được cho. timeout
là thời gian chờ hình xuất hiện nếu nhỏ hơn 0 sẽ chờ vô hạn mặc định timeout=0
, threshold
là độ chính xác khi tìm kiếm, nằm trong khoảng từ 0 tới 1 mặc định threshold=0.8
.
em.tap_to_img(img_path="path/to/img", timeout=0, threshold=0.8)
Nhấn vào tất cả hình ảnh khớp với hình ảnh được cho. timeout
là thời gian chờ hình xuất hiện nếu nhỏ hơn 0 sẽ chờ vô hạn mặc định timeout=0
, threshold
là độ chính xác khi tìm kiếm, nằm trong khoảng từ 0 tới 1 mặc định threshold=0.8
.
em.tap_to_imgs(img_path="path/to/img", timeout=0, threshold=0.8)
Chờ cho tới khi hình ảnh xuất hiện trên màn hình, chờ tối đa timeout
giây, nếu timeout=0
sẽ chờ vô hạn cho tới khi có hình ảnh. threshold
là độ chính xác khi tìm kiếm nằm trong khoảng 0 tới 1 mặc định threshold=0.8
.
em.wait_img_existed(img_path="path/to/img", timeout=0, threshold=0.8)
Vuốt từ vị trí _from
tới vị trí to
trong khoảng thời gian duration
millisecond.
em.swipe(_from=(100, 200), to=(500, 200), duration=100)
Gửi đoạn văn bản text
.
em.send_text(text)
Gửi event tới emulator
import emulator
from emulator import keys
ld = emulator.LDPlayer("path/to/ldplayer dir")
em = ld.emulators[0].start()
em.wait(5).send_event(keys.KEYCODE_CALL)
Nhấn vào nút home
em.home()
Nhấn vào nút back
em.back()
Nhấn vào nút app switcher
em.app_switcher()
Lưu window_dump thành file
em.dump_xml(as_file="path/local.xml")
Trả 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ề None
import emulator
from emulator.node import By
ld = emulator.LDPlayer("path/to/ldplayer")
em = ld.emulator[0].start().wait(10)
em.find_node(By.TEXT, "node text")
Trả về một list
là tất cả các node trong window_dump có giá trị khới với gía trị đã cho
import emulator
from emulator.node import By
ld = emulator.LDPlayer("path/to/ldplayer")
em = ld.emulators[0].start().wait(10)
nodes = em.find_nodes(By.TEXT, "text node")
Dừng chương trình trong second giây
em.wait(second)
Ẩn emulator
em.hide()
Hiển thị emulator
em.show()
Tắt emulator
em.quit()