ทดสอบ Uiautomator

  
Framework สำหรับการทดสอบ UI เชิงฟังก์ชันแบบข้ามแอป
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
13 สิงหาคม 2025 2.3.0 - - 2.4.0-alpha06

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มการอ้างอิงในการทดสอบ คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูลของคุณ

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha06"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha06")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

ทดสอบ Uiautomator Shell เวอร์ชัน 1.0

เวอร์ชัน 1.0.0-alpha02

13 สิงหาคม 2025

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.0.0-alpha01

18 มิถุนายน 2025

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ไลบรารีเชลล์ ui-automator เวอร์ชันอัลฟ่าแรกเพื่อเรียกใช้คำสั่งเชลล์ในฐานะผู้ใช้เชลล์ ไลบรารีนี้อนุญาตให้อ่าน stdout, stderr และเขียนใน stdin ของกระบวนการ sh ที่เปิดตัวโดยเชลล์ โดยจะย้อนกลับ UiAutomation#executeShellCommandRwe ที่เปิดตัวใน API 34

เวอร์ชัน 2.4

เวอร์ชัน 2.4.0-alpha06

13 สิงหาคม 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha06 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API ที่อิงตามหน้าต่างเพื่อการทดสอบแบบหลายหน้าต่างที่ดียิ่งขึ้น กล่าวคือ ตอนนี้สามารถใช้ UiDevice#findWindow เพื่อค้นหา UiWindow ที่เฉพาะเจาะจงตาม ByWindowSelector ที่สร้างด้วยเมธอดจากโรงงาน By.Window (I359c4, I40528, I8c963)

เวอร์ชัน 2.4.0-alpha05

18 มิถุนายน 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha05 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม UiObject2#waitForStable เป็นทางลัดสำหรับ UiObject2#accessibilityNodeInfo#waitForStable() แล้ว

เวอร์ชัน 2.4.0-alpha04

4 มิถุนายน 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ onView เป็น onElement เพื่อให้ชัดเจนว่าใช้ได้กับ Compose (I53a3b, b/419006806)

การแก้ไขข้อบกพร่อง

เวอร์ชัน 2.4.0-alpha03

20 พฤษภาคม 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ waitForStableInActiveWindow แสดง NPE ในบางกรณี (Ibf50f, b/417046391)

เวอร์ชัน 2.4.0-alpha02

7 พฤษภาคม 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • รูปร่างเริ่มต้นของ Uiautomator Api ใหม่ UiAutomatorTestScope สร้างได้ผ่านโรงงาน uiAutomator ซึ่งให้สิทธิ์เข้าถึง API onView ใหม่
  • กฎ Lint เริ่มต้นสำหรับคำเตือนเกี่ยวกับการใช้ AccessibilityNodeInfo#getText และแนะนำให้ใช้ textAsString

การเปลี่ยนแปลง API

  • เพิ่ม Configurator#setDefaultDisplayId เพื่อตั้งรหัสการแสดงผลเพื่อจำกัดการค้นหาทั้งหมดเป็น (Icdf17)
  • เปลี่ยน Searchable (อินเทอร์เฟซที่ UiDevice และ UiObject2 ใช้ร่วมกัน) เป็นแบบสาธารณะเพื่อความสะดวก (I67f18)

การแก้ไขข้อบกพร่อง

  • แก้ไขการจัดการแป้น Meta ใน UiDevice#pressKeyCodes (I73f80)
  • อัปเดต UiDevice#getWindowRoots ให้แสดงรูทตามลำดับ Z เสมอ (I87426)
  • แก้ไขปัญหาที่ท่าทางสัมผัสบางอย่างไม่สมบูรณ์ (I60dd3, If4edd)
  • แก้ไขการวนซ้ำที่ไม่มีที่สิ้นสุดซึ่งเกิดขึ้นได้ยากเมื่อเรียกใช้ UiDevice#scrollUntil (I39989)

เวอร์ชัน 2.4.0-alpha01

26 มิถุนายน 2024

androidx.test.uiautomator:uiautomator:2.4.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เลิกใช้งาน Configurator#getKeyInjectionDelay และ setKeyInjectionDelay เนื่องจากตอนนี้ไม่ได้ใช้พารามิเตอร์แล้ว เพราะระบบจะแทรกข้อความโดยตรงเสมอแทนที่จะใช้การกดแป้น (I3bcc5)

การแก้ไขข้อบกพร่อง

  • อัปเดตระยะเวลาระหว่างUiObject2เหตุการณ์การเคลื่อนไหวเพื่อรองรับอัตราการรีเฟรชแบบไดนามิก (เช่น Smooth Display) (I43f12)
  • ลดความไม่เสถียรจากการล้าสมัยของโหนดการช่วยเหลือพิเศษใน UI บางรายการโดยการล้างแคชการช่วยเหลือพิเศษเป็นระยะ (I3be25)
  • แก้ไขปัญหา StaleObjectException ที่เกิดขึ้นเมื่อโทรหา toString หรือ hashCode ใน UiObject2 ที่ล้าสมัย (I38ea1)
  • ปรับปรุงUiWatcherประสิทธิภาพด้วยการข้ามการเรียกwaitForIdleที่ไม่จำเป็น (I8c65e)
  • แก้ไขความไม่ถูกต้องของ Javadoc โดยเฉพาะอย่างยิ่งเพื่อชี้แจงเมื่อมีการใช้พารามิเตอร์ Configurator แต่ละรายการ (Ie10b1, I71631)

เวอร์ชัน 2.3.0

เวอร์ชัน 2.3.0

21 กุมภาพันธ์ 2024

androidx.test.uiautomator:uiautomator:2.3.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.2.0

  • การรองรับหลายจอแสดงผล: เพิ่มการรองรับการค้นหาและการดำเนินการกับออบเจ็กต์ในจอแสดงผลหลายจอ และUiDevice วิธีการจัดการจอแสดงผลรอง (Ie6544, I912cd)
  • ตัวเลือกใหม่
    • เพิ่ม By.displayId เพื่อเลือกออบเจ็กต์ตามรหัสที่แสดง (I1825b)
    • เพิ่ม By.hasParent และ By.hasAncestor เพื่อเลือกออบเจ็กต์ตามออบเจ็กต์หลัก (I93c36)
    • เพิ่มBy.hintวิธีการเลือกออบเจ็กต์ตามข้อความบอกใบ้ (Idd345)
  • เงื่อนไขที่กำหนดเอง: แสดงConditionอินเทอร์เฟซเพื่อรองรับเงื่อนไขการรอที่กำหนดเอง และเพิ่มเมธอด UiDevice#wait, UiObject2#wait และ UiObject2#scrollUntil ที่เกี่ยวข้อง (27c0ea, 099d6e)
  • การแก้ไขข้อบกพร่องและความน่าเชื่อถือ
    • แก้ไขปัญหาที่การคำนวณขนาดการแสดงผลไม่ถูกต้องในบางครั้งและอาจละเว้นบางส่วนของหน้าจอ (Ifc016) คุณอาจต้องปรับพิกัดและออฟเซ็ตที่ใช้ในการทดสอบ
    • อัปเดตการแทรก MotionEvent เพื่อปรับปรุงความแม่นยำ (678ca3) และจำลองท่าทางของผู้ใช้ได้ดียิ่งขึ้น (454450)
    • ปรับปรุงความน่าเชื่อถือของการเลื่อน (I7b059) การหมุน (c6cea0) การคลิกแบบยาว (49572b) การบีบนิ้ว (3c619a) และอื่นๆ

เวอร์ชัน 2.3.0-rc01

7 กุมภาพันธ์ 2024

androidx.test.uiautomator:uiautomator:2.3.0-rc01 จะได้รับการเผยแพร่โดยไม่มีการเปลี่ยนแปลง เวอร์ชัน 2.3.0-rc01 มีคอมมิตเหล่านี้

เวอร์ชัน 2.3.0-beta01

13 ธันวาคม 2023

androidx.test.uiautomator:uiautomator:2.3.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อUiObject2วิธีการมาร์จิ้นตามเปอร์เซ็นต์เป็น setGestureMarginPercentage และ setGestureMarginsPercentage เพื่อให้สอดคล้องกัน (I24435)

การแก้ไขข้อบกพร่อง

  • ปรับปรุงข้อผิดพลาดที่เกิดขึ้นเมื่อไม่พบหรือเข้าถึงจอแสดงผลรองไม่ได้ (116b23)

เวอร์ชัน 2.3.0-alpha05

1 พฤศจิกายน 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha05 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เพิ่ม UiObject2#getDrawingOrder เพื่อแสดงข้อมูลลำดับการวาด (z-index) (I5dfa4)
  • เพิ่มUiDeviceเมธอดสำหรับรับ ตั้งค่า ตรึง และยกเลิกการตรึงการหมุนของจอแสดงผลรอง (I912cd)

การแก้ไขข้อบกพร่อง

  • เพิ่มการลองอีกครั้งใน UiObject2#scrollUntil เมื่อตรวจไม่พบจุดสิ้นสุดของการเลื่อน (Ibac6f)
  • แก้ไขปัญหาที่ UiDevice จะใช้อินสแตนซ์ Instrumentation ที่ล้าสมัยหากมีการสร้างใหม่ (I18cae)
  • แก้ไข NPE ที่อาจเกิดขึ้นหากไม่สามารถกำหนดรหัสจอแสดงผลเมื่อทิ้งโหนด (Icafcb)
  • เพิ่มคำเตือนเมื่อคลิก/เลื่อนออบเจ็กต์ที่คลิก/เลื่อนไม่ได้ (I4a5d9)
  • ลดUiObject2ความเร็วในการเลื่อนเริ่มต้นเพื่อปรับปรุงความน่าเชื่อถือ (I5e071)

เวอร์ชัน 2.3.0-alpha04

26 กรกฎาคม 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha04 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เพิ่ม By.hasParent และ By.hasAncestor เพื่อรองรับการค้นหาออบเจ็กต์ตามออบเจ็กต์ระดับบนสุด (I93c36)
  • เพิ่ม UiObject2#getHint เพื่อดึงข้อความคำแนะนำของออบเจ็กต์ และเมธอด By.hint เพื่อเลือกออบเจ็กต์ตามข้อความคำแนะนำ (Idd345)
  • เพิ่ม By.displayId เพื่อรองรับการเลือกออบเจ็กต์ตามจอแสดงผลที่ออบเจ็กต์นั้นอยู่ (I1825b)
  • เพิ่มเมธอด UiDevice#getDisplayHeight(int) และ UiDevice#getDisplayWidth(int) เพื่อค้นหามิติข้อมูลของจอแสดงผลตามรหัส (Ie6544)
  • เพิ่มเมธอด wait(SearchCondition, long) และ wait(UiObject2Condition, long) อีกครั้งเพื่อความเข้ากันได้แบบย้อนหลัง (Iebfda)
  • เปลี่ยน UiDevice#executeShellCommand เป็นสาธารณะ แต่แนะนำแทนที่จะซ่อน (Ic48a1)

การแก้ไขข้อบกพร่อง

  • อัปเดตการแทรก MotionEvent เพื่อลดความไม่เสถียรโดยจัดลำดับความสำคัญของความแม่นยำของท่าทางสัมผัสเหนือความเร็ว (678ca3)
  • เพิ่มการติดตามไปยังเมธอดที่ใช้ทรัพยากรมากเพื่อระบุจุดคอขวดด้านประสิทธิภาพ (d17de3)
  • เพิ่มกลไกการลองอีกครั้งเมื่อเริ่มการเชื่อมต่อ UiAutomation (048caf)
  • แก้ไข NPE ที่อาจเกิดขึ้นจากโหนด Null ใน UiDevice#dumpWindowHierarchy (b725eb)
  • แก้ไขข้อผิดพลาดที่ไม่คาดคิดจากการค้นหาหรือการดำเนินการในจอแสดงผลส่วนตัว (985db6, 7053d4)

เวอร์ชัน 2.3.0-alpha03

19 เมษายน 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปิดเผยอินเทอร์เฟซ Condition เพื่ออนุญาตเงื่อนไขการรอที่กำหนดเองแทนที่จะอาศัยเฉพาะเงื่อนไขในตัวใน Until และอัปเดตเมธอด UiDevice#wait และ UiObject2#wait เพื่อยอมรับอินเทอร์เฟซนี้ (27c0ea)
  • เพิ่ม UiObject2#scrollUntil เพื่อรองรับการเลื่อนจนกว่าจะตรงตามเงื่อนไขและเพื่อให้เทียบเท่ากับ UiScrollable (099d6e)
  • เพิ่ม UiDevice#setOrientationPortrait และ setOrientationLandscape เพื่ออำนวยความสะดวกในการหมุนเวียนในอุปกรณ์ประเภทต่างๆ (e13cb7)
  • เพิ่ม UiObject2#setGestureMarginPercent เพื่อรองรับการตั้งค่าขอบที่สัมพันธ์กับขนาดออบเจ็กต์ (Ib8c77)

การแก้ไขข้อบกพร่อง

  • แก้ไขเมธอด UiScrollable ที่บางครั้งใช้พิกัดที่ไม่ถูกต้องใน SDK 18 ถึง 22 (b53ece)
  • แก้ไขปัญหาที่ UiObject2#setText และ clearText แก้ไขข้อความใน SDK 18 และ 19 ไม่ได้ (77e41d)
  • แก้ไขปัญหาที่UiWatcherไม่ได้ดำเนินการตามลำดับที่ถูกต้อง (c85f92)
  • แก้ไขปัญหาที่การหมุนอุปกรณ์อาจยังไม่เสร็จสมบูรณ์หลังจากเปลี่ยนการวางแนว UiDevice (c6cea0)
  • ปรับปรุงความน่าเชื่อถือของการคลิกค้าง การลาก และการบีบนิ้ว (49572b, 3c619a)

เวอร์ชัน 2.3.0-alpha02

11 มกราคม 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ปรับปรุงการบันทึกในไลบรารีทั้งหมดเพื่อให้ข้อมูลเพิ่มเติม เตือนเกี่ยวกับปัญหาที่อาจเกิดขึ้น และปรับปรุงความสอดคล้องกัน
  • เพิ่ม UiDevice#pressKeyCodes เพื่อรองรับการกดหลายปุ่มพร้อมกัน เช่น กดปุ่มเปิด/ปิดและปุ่มลดเสียงเพื่อถ่ายภาพหน้าจอ (22e525)
  • เพิ่ม UiDevice#setCompressedLayoutHierarchy และเลิกใช้งาน UiDevice#setCompressedLayoutHeirarchy เพื่อแก้ไขการสะกดชื่อเมธอดผิด (4e2f65)
  • ทำเครื่องหมาย UiAutomatorInstrumentationTestRunner ว่าเลิกใช้งานแล้วเนื่องจากจัดการ UiAutomatorTestCase ที่เลิกใช้งานแล้วและไม่จำเป็นอีกต่อไป (be6c85)
  • อัปเดตความล่าช้าระหว่าง UiObject2 MotionEvent เป็น 2 เท่าของอัตราการรีเฟรชของจอแสดงผลเพื่อจำลองท่าทางของผู้ใช้ได้ดียิ่งขึ้น (454450)
  • เพิ่มการรองรับข้อความหลายบรรทัดและการจับคู่คำอธิบาย (1625e6, b/255787130)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ StaleObjectExceptions อาจเกิดขึ้นขณะค้นหาหรือรอออบเจ็กต์ (4cbcc0)
  • แก้ไขค่าที่ส่งคืนของ UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning และ flingToEnd ที่ไม่ได้ระบุว่าถึงจุดเริ่มต้น/สิ้นสุดหรือไม่ (d33e06)
  • แก้ไขวิธีการ UiScrollable#scrollForward และ scrollBackward ที่ไม่สนใจการหมดเวลาที่กำหนดค่าไว้ (29e4f3)
  • แก้ไขBySelectorตัวสร้างสำเนาที่ไม่จัดการเครื่องมือเลือกความลึก (6c7b91)
  • แก้ไขการจัดการค่าเปอร์เซ็นต์ที่ไม่ถูกต้องใน UiObject#pinchIn และ pinchOut (01b973)
  • แก้ไขปัญหาที่พบได้ยากซึ่งการรองรับหลายหน้าต่างจะหายไปหากมีการรีเซ็ตการเชื่อมต่อ UiAutomation พื้นฐาน (1bb956)

เวอร์ชัน 2.3.0-alpha01

7 กันยายน 2022

androidx.test.uiautomator:uiautomator:2.3.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha01 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • ใส่คำอธิบายประกอบเกี่ยวกับค่า Null ของเมธอดสาธารณะทั้งหมด
  • เปลี่ยนการแทรก MotionEvent เป็นแบบอะซิงโครนัสโดยมีการหน่วงเวลาสั้นๆ เพื่อให้UiObject2ท่าทางสัมผัสราบรื่นยิ่งขึ้น
  • ลดช่วงเวลาการสำรวจขณะรอจาก 1,000 มิลลิวินาทีเป็น 100 มิลลิวินาที
  • อัปเดต UiDevice#wakeUp และ UiDevice#sleep ให้ใช้ KEYCODE_WAKEUP และ KEYCODE_SLEEP เพื่อรองรับอุปกรณ์ที่ลบล้างปุ่มเปิด/ปิด
  • เพิ่ม UiObject2#getDisplayId และรองรับการค้นหาและจัดการออบเจ็กต์ในจอแสดงผลหลายจอ
  • เพิ่มเมธอด UiObject#click และ UiObject2#clickAndWait สำหรับคลิกจุดโดยใช้พิกัดของจุด

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่การคำนวณขนาดการแสดงผลไม่ถูกต้องในบางครั้งและอาจละเว้นบางส่วนของหน้าจอ โดยเฉพาะในโหมดหลายหน้าต่าง (Ifc016c)
  • แก้ไขการปรับขนาดภาพหน้าจอใน UiDevice#takeScreenshot (Id80ad6)
  • ปรับปรุงความน่าเชื่อถือของ Until.scrollFinished และ UiObject2#scroll (I7b0595)
  • แก้ไขIncorrectContextUseViolationคำเตือนโหมดเข้มงวด (Iffa6a0)