ตัวเฝ้าดูอินเทอร์เฟซ (Interface Monitor)¶
Monitor ใช้สำหรับเฝ้าดูการเปลี่ยนแปลงของอินเทอร์เฟซแบบเรียลไทม์ และเมื่อตรงตามเงื่อนไขที่กำหนดไว้ล่วงหน้า จะดำเนินการที่กำหนดไว้ เช่น การคลิกองค์ประกอบ, การกดปุ่ม, หรือการบันทึกจำนวนครั้งที่เกิดขึ้น คุณสามารถเข้าใจได้ว่ามันคือการทำงานพื้นฐานของฟังก์ชันเช่น Li Tiaotiao หรือแอปที่คล้ายกันซึ่งใช้ในการข้ามโฆษณาโดยอัตโนมัติ เนื่องจากฟังก์ชันนี้จะทำการคลิกหรือกดปุ่มโดยอัตโนมัติ อาจทำให้เกิดการกระทำที่ไม่คาดคิดเมื่อต้องการให้ผู้ใช้เข้ามาควบคุมเอง ดังนั้นโปรดใช้งานด้วยความระมัดระวัง
เคล็ดลับ
การเปิดใช้งานตัวเฝ้าดู¶
อินเทอร์เฟซต่อไปนี้จะเปิดใช้งานตัวเฝ้าดูอินเทอร์เฟซ โดยค่าเริ่มต้นตัวเฝ้าดูจะอยู่ในสถานะปิดใช้งาน
ข้อควรสนใจ
d.set_watcher_loop_enabled(True)
การตรวจสอบสถานะการเปิดใช้งานของตัวเฝ้าดู¶
คุณสามารถใช้อินเทอร์เฟซต่อไปนี้เพื่อตรวจสอบว่าตัวเฝ้าดูอินเทอร์เฟซปัจจุบันเปิดใช้งานอยู่หรือไม่
d.get_watcher_loop_enabled()
การปิดใช้งานตัวเฝ้าดู¶
ปิดลูปของตัวเฝ้าดู จะไม่มีการประมวลผล event ที่ลงทะเบียนไว้โดยอัตโนมัติอีกต่อไป เช่น การคลิก
d.set_watcher_loop_enabled(False)
ข้อควรสนใจ
การลบตัวเฝ้าดูทั้งหมด¶
ลบ event เฝ้าดูทั้งหมดที่ได้นำไปใช้แล้ว เพื่อล้างกฎที่ใช้โดยสคริปต์ก่อนหน้าหรือที่ถูกขัดจังหวะอย่างผิดปกติ ขอแนะนำให้รันคำสั่งนี้ทุกครั้งก่อนเริ่มสคริปต์เพื่อป้องกันไม่ให้ event ที่ลงทะเบียนโดยงานก่อนหน้าส่งผลกระทบต่อกระบวนการทำงานปัจจุบัน
d.remove_all_watchers()
การลงทะเบียน Click Event¶
Click event จะทำการคลิกโดยอัตโนมัติเมื่อมี selector ที่ตรงกันปรากฏขึ้นบนอินเทอร์เฟซ ตัวอย่างเช่น การข้ามหน้าต่างป๊อปอัปของซอฟต์แวร์โดยอัตโนมัติ เช่น ข้อตกลงการใช้งาน, การแจ้งเตือนการอัปเดต หรือการคลิกอัตโนมัติบนอินเทอร์เฟซที่เฉพาะเจาะจง
ข้อควรสนใจ
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="用户协议")], Selector(textContains="同意", clickable=True))
คำแนะนำ
เมื่อลงทะเบียน event ดังกล่าว เมื่ออินเทอร์เฟซที่มีข้อความ "用户协议" (ข้อตกลงผู้ใช้) ปรากฏขึ้น จะทำการคลิกปุ่ม "同意" (ยอมรับ) โดยอัตโนมัติ
การลงทะเบียน Key Press Event¶
Key press event จะทำการกดปุ่มโดยอัตโนมัติเมื่อมี selector ที่ตรงกันปรากฏขึ้นบนอินเทอร์เฟซ เช่น การกดปุ่มย้อนกลับอัตโนมัติ ซึ่งสามารถหลีกเลี่ยงการเข้าสู่บางหน้าจอได้โดยอัตโนมัติ แน่นอนว่าการใช้ click event ก็สามารถบรรลุผลลัพธ์เดียวกันได้
ข้อควรสนใจ
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="个人中心")], Keys.KEY_HOME)
คำแนะนำ
เมื่อลงทะเบียน event ดังกล่าว เมื่ออินเทอร์เฟซที่มีข้อความ "个人中心" (ศูนย์ส่วนตัว) ปรากฏขึ้น จะทำการกดปุ่ม HOME ของโทรศัพท์โดยอัตโนมัติ
การลงทะเบียน Count Event¶
Count event คือการเพิ่มตัวนับขึ้น 1 เมื่อมีการดำเนินการที่ตรงกับ selector บางอย่างปรากฏขึ้นบนอินเทอร์เฟซ เมื่อมีข้อมูลสำคัญที่ปรากฏขึ้นและหายไปอย่างรวดเร็วบนหน้าจอ คุณสามารถใช้ฟังก์ชันนี้เพื่อนับว่าอินเทอร์เฟซบางอย่างเคยปรากฏขึ้นหรือไม่ หรือปรากฏขึ้นกี่ครั้ง
ข้อควรสนใจ
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="好的")])
คำแนะนำ
event ข้างต้นจะบันทึกจำนวนครั้งที่อินเทอร์เฟซที่มีข้อความ "好的" (ตกลง) ปรากฏขึ้น ใช้ินเทอร์เฟซต่อไปนี้เพื่อรับจำนวนครั้งที่ count event ถูกทริกเกอร์
d.get_watcher_triggered_count("RecordElementAppearTimes")
การเปิดใช้งาน Event¶
หลังจากลงทะเบียน event แล้ว จะต้องเปิดใช้งานเพื่อให้ event นั้นถูกลงทะเบียนในลูปของตัวเฝ้าดูอินเทอร์เฟซ มิฉะนั้นจะไม่มีผล
ข้อควรสนใจ
d.set_watcher_enabled("RecordElementAppearTimes", True)
การปิดใช้งาน Event¶
คุณสามารถเรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อให้ตัวเฝ้าดูอินเทอร์เฟซยกเลิกการเฝ้าดู event ที่ระบุ
ข้อควรสนใจ
d.set_watcher_enabled("RecordElementAppearTimes", False)
การลบ Event¶
ลบ event ออกจากตัวเฝ้าดูโดยสมบูรณ์ และจะถูกลบออกจากรายการ event ที่ลงทะเบียนไว้ด้วย
d.remove_watcher(name)
การตรวจสอบสถานะการเปิดใช้งานของ Event¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตรวจสอบว่า event ถูกเปิดใช้งานอย่างถูกต้องหรือไม่ เพื่อป้องกันกรณีที่ลงทะเบียนแล้วแต่ไม่ได้เปิดใช้งาน
d.get_watcher_enabled(name)
Advanced Selector¶
นอกจากการรองรับ selector แบบง่ายแล้ว คุณยังสามารถใช้ selector ที่ซับซ้อนมากขึ้นเพื่อจับคู่องค์ประกอบได้อีกด้วย ตัวอย่างต่อไปนี้แสดงวิธีการเขียน selector ที่ซับซ้อน
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(resourceId="com.android.market:id/v_app_item").child(index=3).sibling(index=2).child(index=2).child()], Keys.KEY_HOME)
โค้ดตัวอย่างฉบับสมบูรณ์¶
ด้านล่างนี้คือบล็อกโค้ดตัวอย่าง ซึ่งเปิดใช้งานลูปของตัวเฝ้าดูและลงทะเบียน event เฝ้าดูสามประเภท เมื่ออินเทอร์เฟซที่มีข้อความ "用户协议" (ข้อตกลงผู้ใช้) ปรากฏขึ้น จะทำการคลิก "ยอมรับ" โดยอัตโนมัติ, เมื่ออินเทอร์เฟซที่มีข้อความ "个人中心" (ศูนย์ส่วนตัว) ปรากฏขึ้น จะกลับไปที่หน้าจอหลักทันที, และเมื่ออินเทอร์เฟซที่มีข้อความ "好的" (ตกลง) ปรากฏขึ้น จะบันทึกจำนวนครั้งที่อินเทอร์เฟซนี้ปรากฏ
ข้อควรสนใจ
d.remove_all_watchers()
d.set_watcher_loop_enabled(True)
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="用户协议")],
Selector(textContains="同意", clickable=True))
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="个人中心")], Keys.KEY_HOME)
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="好的")])
d.set_watcher_enabled("ClickAcceptWhenShowAggrement", True)
d.set_watcher_enabled("PressBackWhenHomePageShows", True)
d.set_watcher_enabled("RecordElementAppearTimes", True)